C打印一千内素数,哪错了?

来源:百度知道 编辑:UC知道 时间:2024/09/21 12:38:44
#include <stdio.h>
#include <math.h>
void main()
{ int n=0, i, j,w,k;
for(i=2;i<=1000;i++)
{w=0;
k=sqrt(i);
for(j=2;j<=k;j++){
if(i%j) w=1;
else w=0; break;
}
if(w=1) printf("%6d",i);n++;
if(!(n%10)) printf("\n");
}
}

if else后如果有多条语句要用括号,另外==不要写成=了,这是个常犯错误

for(j=2;j<=k;j++){
if(i%j) w=1;
else { w=0; break; } // 这一行
}
.....
if(w==1) { printf("%6d",i);n++; } // 这一行

太难了

if(i%j) w=1;

i%j这个应该有个结果吧?

改成这样就可以了。。。交流。。。

#include <stdio.h>
#include <math.h>
void main()
{
int n=0, i, j,w,k;
for(i=2;i<=1000;i++)
{
w=1;
k=sqrt(i);
for(j=2;j<=k;j++)
if(i%j==0)
{
w=0;
break;
}

if(w)
{
printf("%6d",i);
n++;
if(n%10==0)
printf("\n");
}

}
}