谁能帮忙解释下这段C程序(新手C程序)

来源:百度知道 编辑:UC知道 时间:2024/04/29 08:24:07
题目要求是,求200以内的全部素数
我是个自学的新手,还望前辈们多多指点,我把我不懂的地方都标注出来了,分不多,望大家体谅。
#include<stdio.h>
main()
{
int m,n,i,prime;
i=0;
for(m=2;m<=200;m++)
{
prime=1; //这个是做什么用的
for(n=2;n<m;n++)
if(m%n==0)
prime=0; //这个呢
if(prime) //括号里的prime是什么意思,取什么值
{
printf("%5d",m); //似乎到这里已经确定m是素数了,可怜我还不知道怎么确定的,上面程序不懂。
i++;
if(i%3==0) //上面这两句什么意思,干吗用的
printf("\n");
}
}
if(i%3!=0) //这怎么又来确定i能不能被3整除了?有什么用?怎么不在上面的for循环里确定?
printf("\n");
}
Sorry,本人实在是有些菜,自己看书看不懂,特来请教大家。

#include<stdio.h>
main()
{
int m,n,i,prime;
i=0;
for(m=2;m<=200;m++)
{
prime=1; //用来标志这个数,为1是素数,为0则不是素数
for(n=2;n<m;n++)
if(m%n==0)
prime=0;//如果m可以整除2到m-1任一数,说明它不是素数,赋值0(原来为1)
if(prime) //prime取1时为真,执行语句。为0时是假,不执行。
{
printf("%5d",m); //为真的时候执行了这里面,当然就是素数了。
i++;
if(i%3==0) //i能被3整除就 打一个回车换行,就是说每行打印3个素数。
printf("\n");
}
}
if(i%3!=0) //这句一点意思都没有啊。。干嘛用啊?不懂干嘛用。。最后的时候还要判断要不要打回车?没用。。删除。。哈哈
printf("\n");
}

prime 一个标识 用来判断这个是否是素数
prime=0 说明这个数字 被小于他的一个数整数了 因此不是素数
if(0)是不执行.
但是上面程序可能少了一个大括号..后面的那个if(0) 应该在for外面

而那个i%3 并不是用来判断是否素数,,而是用来输出的..例如 每三个素数 为一行..只是一个美观而已

接着自己理解下就行了 相信自己的理解 然后相信自己调试的结果...就对了

我学的也不怎么好 ,自己摸索很久,就写一下我的理解,希望能抛砖引玉。如有错误,请高手指教。

if(prime) //括号里的prime是什么意思,取什么值
这个prime取0或1,0为假,1为真,为1时进行下面的操作printf("%5d",m); 打印该数字。

//似乎到