用c语言输出第30个素数,第一个素数是2

如题
#include "stdio.h"
int main()
{
int num=1,i,j,sign;
for(i=3;;i++)
{sign=1;
for(j=2;j<i-1;j++)
{if(i%j==0){sign=0;continue;}
else continue;}
if(sign=1)num++;
if(num>=30)break;
}
printf("第三十个素数是%d",i);
return 0;
}

为什么我写的不对。

你好,正确如下:
#include "stdio.h"
int main()
{
int num=1,i,j,sign;
for(i=3;;i++)
{
sign=1;
for(j=2;j<i;j++)
{
if(i%j==0)
{
sign=0;
break;
}
}
if(sign==1)
num++;
else
continue;
if(num>=30)
break;
}
printf("第三十个素数是%d",i);
return 0;
}

你的程序问题: for(j=2;j<i;j++),应该是i 不是i-1;可以举个例子,3就不符合你的代码,但是是素数。if(sign==1),虽然if(sign=1)用法也可以,但是没有意义,在这里不能用。还有就是你的程序太冗余了,如果判断出不是素数直接判断下个数就行了,还有就是在循环最后不用continue,它是当该语句下面还有语句时跳过去接着循环。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-02
if(sign=1)num++;

修改为

if(sign == 1)num++;

=是赋值 ==是判断相等
第2个回答  2013-05-02

if(sign=1)num++;改成if(sign==1) num++;