c语言编程题:求100到300之间的所有素数?

我是菜鸟,刚学c语言,所以请帮帮忙,最好用For循环,我比较懂它。谢谢啦!

#include <stdio.h>
#include <math.h>
int main()
{
int i,j,n=0;
for(i=100;i<=300;i++)
{
for(j=2;j<=sqrt(double(i));j++)
if(i%j==0) break;
if(j>=sqrt(double(i)))
{
printf("%-4d",i);
n++;
if(n%10==0)
printf("\n");
}
}
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-07
for(i=2;i<=300;i++) isPrime[i]=1;tot=0;for(i=2;i<=300;i++){ if(isPrime[i]) {tot++;Prime[tot]=i;} for(j=1;j<=tot&&i*Prime[j]<=300;j++) { isPrime[i*Prime[j]]=0; if(i%Prime[j]==0) break; }}Prime[i]最终保存的就是从1-300的素数,从中选出100-300的即可,算法复杂度O(n).比判断素数复杂度低,较优。
第2个回答  2013-05-07
#include "stdio.h"
main()
{
int i,j;
for(i=100;i<=300;i++)
{
for(j=2;j<i;j++)
if(i%j==0)break;
if(j==i)printf("%4d",i);
}
}本回答被网友采纳