c++ 求素数

来源:百度知道 编辑:UC知道 时间:2024/06/21 09:24:49
#include<iostream>
using namespace std;
int main()
{
int i;
int sum=0;
int flag=0;
for(i=1;i<=100;i++)
{
for(int j=2;j<i;j++)
{
if(i%j==0) //不是素数
flag++;
else
flag=0; //是素数
sum+=flag;
}
if(sum==0)
cout<<i<<endl;

}
return 0;
}

想输出1到100之间的素数,却实现不了,不知是哪里错了,请帮忙看看,先谢谢了

建议用一楼和三楼的方法(一楼和三楼程序算法一样),这样可以节省执行时间。因为内循环只到了m的平方根;如果楼主要单改程序的话,二楼的方法可以考虑。

#include"stdio.h"
#include"math.h"
int main(void)
{
int count,i,m,n;
count=0;
for(m=2;m<=100;m++){
n=sqrt(m);
for(i=2;i<=n;i++)
if(m%i==0)break;
if(i>n){
printf("%6d",m);
count++;
if(count%10==0)
printf("\n");
}
}
printf("\n");
return 0;
}

if(sum==0)
cout<<i<<endl;
sum=0;/在这要让sum恢复零

#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{int m,k,i,n=0;
bool prime;
for(m=1;m<=100;m=m+2)
{prime=true;k=int(sqrt(m));
for(i=2;i<=k;i++)
if(m%i==0)
{prime=false;
break;
}
if(prime)
{cout<<setw(5)<<m;
n=n+1;
}
if(n%10==0)cout<<endl