#include
#include
#include
class IPrime //支持检测素数的算法改进
{
public:
virtual bool isPrime(unsigned int)=0;
};
class SPrime:public IPrime//一种检测n是不是素数的算法
{
public:
bool isPrime(unsigned int n)
{
if(n<2)
return false;
unsigned int ncount=(unsigned int)sqrt(n);
for(unsigned int i=2;i<=ncount;i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
};
int printPrime(unsigned int m,unsigned int n,int& sum)//sum 是out参数
{
assert(n>=m); //前置条件判断 n
sum=0; //out 参数置零
IPrime& in=SPrime(); //选择一种判断prime的算法
int ncnt=0; //统计素数个数
for(unsigned int i=m;i<=n;i++) //区间[m,n]之间遍历,如果检测到素数就输出
{
if(in.isPrime(i))
{
++ncnt;
sum+=i;
cout<
if(ncnt%5==0)
cout<
}
return ncnt;}
//测试
void main()
{
unsigned int n=0,m=0;
cout<<"输入m,n. m和n之间用空格隔开,键入ENTER结束输入"<
int ncnt,sum;
cout<<"========================="<
cout<<"\n========================="<
}
楼主你好
具体代码如下:
#include
int prime(int n)
{
int i;
for(i=2;i<=n/2;i++)
if(n%i==0)
return 0;
if(i>=n/2)
return 1;
}
int main()
{
int m,n;
int i;
int count=0;//素数个数
int sum=0;//素数之和
printf("请输入m,n:"); scanf("%d %d",&m,&n);
for(i=m;i<=n;i++)
{
if(prime(i))
{
count++;
sum+=i;
}
}
printf("%d~%d之间的素数个数为:%d 素数之和为:%d\n",m,n,count,sum);
return 0;
}
希望能帮助你哈