c语言关于用for循环求素数

#include#includemain(){int i,j;for(i=2;i<100;i++ ){for (j=2;j<=(i/2);j++)if (i%j==0)break;if (i%j!=0)printf("%d\t",i);}printf("\n");}程序和#include#includemain(){int i,j;for(i=2;i<100;i++ ){for (j=2;j<=(i/2);j++){ if (i%j==0)break;if (i%j!=0)printf("%d\t",i);}}printf("\n");}两个程序。在第二个for那里加了个大括弧为什么程序就乱了?我的理解上加了大括弧好像也可以啊。为什么程序不对?
怎么上传上来编码就乱了。。

要在第二个for里面加括号也是这样子加:

main()
{
int i,j;
for(i=2;i<100;i++ )
{
for (j=2;j<=(i/2);j++)
{
if (i%j==0)
break; //如果能被整除,则退出这个for循环
}
//下面这个判断意思是,如果前面那个for循环结束后,i不能被j整除,则应该是前面的for循环退出原因是j>(i/2),即没有找到能被整除的数,所以认为是素数。
if (i%j!=0) 
printf("%d\t",i);
}
printf("\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-17
#include#include
main()
{
int i,j;
for(i=2;i<100;i++ ) {
for (j=2;j<=(i/2);j++)
if (i%j==0) break;
if (i%j!=0) printf("%d\t",i);
}
printf("\n");
}

#include#include
main()
{
int i,j;
for(i=2;i<100;i++ ) {
for (j=2;j<=(i/2);j++) {
if (i%j==0) break;
if (i%j!=0) printf("%d\t",i);
}
}
printf("\n");
}

这俩根本不是一回事啊= =没加那对大括号,第二句if就是大循环里面的,加了以后就是小循环里面的了。
第一个程序,小循环:
for (j=2;j<=(i/2);j++)
if (i%j==0) break;
意思是说,从2一直到i/2,但凡出现能整除的就跳出小循环,否则就一直循环到i/2为止本回答被提问者采纳
第2个回答  2014-03-26
#include

#include

main()

{int i,j;

for(i=2;i<100;i++ )

{for (j=2;j<=(i/2);j++)

{ if (i%j==0)

break;

if (i%j!=0) //这个判断应该是等到内层的循环做完了之后,才判断的。所以这样写不对

printf("%d\t",i);

}

}

printf("\n");

}

第3个回答  2014-03-26
#include <stdio.h>
#include <math.h>
void main()
{
int i,j,a,sum=0,count=1;
for(i=1000;i>=2;i--)
{
a=sqrt(i);
for(j=2;j<=a;j++)
{
if(i%j==0)
break;
}
if(j>a)
{
printf("%d\t",i);
sum+=i;
count++;
}
if(count>10)
break;
}
printf("sum=%d\n",sum);
}