C语言关于求200到300的素数

我自己的想法如下:编译显示0错误,0警告,但是就是什么东西都没有。郁闷求指导:
#include <stdio.h>
int main()
{
int i,n;
for(i=201;n<=i;i++)
{
if(i%n==0)break;
if(i=300)break;
if(n=i)
printf("%d",i);
}
return 0;
}

完全无法理解楼主的思路啊。。。
for(i=201;n<=i;i++),这个n没有值,为什么放进循环里面判断?而且这判断的是什么???

三个if 完全看不懂楼主是怎么想的。。。
我写了一个程序,楼主可以参考一下,希望可以帮到你

#include <stdio.h>
int main()
{
int i,j;
for(i=200;i<=300;i++) //判断200-300之中的每一个数是否是质数
{
for(j=2;j<i;j++)
if(i%j==0)break; //如果可以整除,则跳出循环
if(j>=i) //如果j>=i,说明从2到i-1都没有一个能被i整除的数,说明就是质数,输出
printf("%d ",i);
}
putchar('\n');
return 0;
}追问

啊。。我的水平真的这么菜吗?我想说的是要从200——300中选素数。就从201开始一个个去试(循环)判断素数的标准不是除了0和1本身不能整出的数吗?打个比方:为什么说17是素数?我的想法就是17除以(2,3,4,5,6……)都不行,到17除以17才可以。我的n值就是这个不断变大的变量啊。但是n<=i.我这样说你能明白我的思路没?

追答

。。。楼主你写少了一个循环。。。
for(i=201;n<=i;i++)
应该是分解成
for(i=201;i<=300;i++)
for(j=2;j<i;j++)
if(i%j==0)break;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-13
首先,你的变量n木有赋值,不过没有赋值不报错的确有点奇怪啊。。。然后是你的思路,头脑中应该有清楚的想法和步骤,所谓素数就是没有除1和它自己以外的数能整除的数字,所以判断的功能是判断有没有数字可以整除,没有的话就输出。而循环的功能就是让那100个数字自己被拿去计算。(还有一个小贴士~其实判断的时候不用从1一直判断到数字n自己,只要判断到根号n-1就好,这样可以使程序节省时间哦!~)(*¯︶¯*)手机打的,密密麻麻,楼主将就下~追问

很感谢啊。。。。。。那个判断到根号n-1就好,课本上也有,但是不理解。。

追答

嘿嘿嘿~不谢啦,没有和一楼一样给你写出代码来。判断到根号n-1就行了是数学证明题~可以不用理解~如果很想知道可以看高数书呀!~要么问高数老师也ok!~

第2个回答  2013-02-13
大哥,你N没有初始化。