C语言求素数问题 哪里出了问题啊

来源:百度知道 编辑:UC知道 时间:2024/05/27 15:53:35
#include<stdio.h>
main()
{
int n,s,i,j,f=1;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
for(j=2;j<n;j++)
if(i%j==0)
{
f=0;
break;
}
if(f)
{
printf("%d",i);
s++;
if(s%10==0)
printf("\n");
}

}
f=1;
}

先来分析一下你的程序啊!
#include<stdio.h>
main()
{
int n,s,i,j,f=1;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
for(j=2;j<n;j++)//这个地方这样可以,但是性能差点,可以将n改为n/2
if(i%j==0) //最好是改为sqrt(n),就是n的开方,用不着除以这么多数
{
f=0;
break;//你的i和j都是从2开始,那么i%j肯定为0,那么break(跳出循环)
} //到最后置f=1,也就是说你的程序什么也没干就退出了,应去掉
if(f)
{
printf("%d",i);
s++;
if(s%10==0)
printf("\n");
}

}
f=1;
}
理解了程序的错误原因,改起来就简单多了撒,剩下就太简单了,你看下楼上的,自习揣摩一下,我拷贝过来说说啊!
#include<stdio.h>
#include<math.h>//用来支持开发sqrt()
main()
{
int n,s=0,i,j,f=1;
scanf("%d",&n);
for(i=2;i<=n;i++)
{ f=1;
for(j=2;j<=sqrt(n);j++)//此句可以用了
if(i%j==0)
{ f=0; break;}//本句中break就是在找到满足条件的素数时跳出循环
if(f)
{ printf("%d ",i);
s++; }
if(s%10=