求解释,C语言程序,不是他的作用,而是他的工作原理!急!

#include<stdio.h>intmain(){inti,j,temp;for(i=100;i<=200;i++){temp=0;for(j=2;j<i;j++){... #include<stdio.h>
int main()
{
int i,j,temp;
for(i=100;i<=200;i++)
{
temp=0;
for(j=2;j<i;j++)
{
if(i%j==0)
temp++;
}
if(temp==0)
printf("%d \n",i);
}
}
展开
 我来答
syht2000
高粉答主

2012-05-28 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
//只要一个数n不能被所有的从2到n-1之间的数整除,那它就是质数。
for(i=100;i<=200;i++) //i在100至200循环
{
temp=0; //初始计数temp为0
for(j=2;j<i;j++) //j在2至i之间循环,比如外面的i为50,j即在2至50
{
if(i%j==0) //如果i能被j整除,即不是素数,temp计数加1
temp++;
}
if(temp==0) //如果temp为0,即i是素数,则输出i
printf("%d \n",i);
}

以上就是解释,这道题虽然结果没问题,但其实也是有问题的,求素数并不需要从2到i间循环,只需要在2至i的开方间循环就行了(具体到c也就是从2至sqrt(i)之间,当然这个算法本身也是比较初级的),而且只要判断出i%j==0,就可以用break跳出循环出,没必要再向下进行。
furious_tauren
2012-05-28 · TA获得超过4056个赞
知道大有可为答主
回答量:1913
采纳率:100%
帮助的人:774万
展开全部
判别100-200 间的素数吧? 最核心的代码是:
for(j=2;j<i;j++)
{
if(i%j==0)
temp++;
}
他是判别一个数 i 是否能被一个大于1 的自然数整除, 如果能被整除,那就不是素数,此时把temp自增。如果所有的自然数都不能整除i, 那i就是素数,此时temp 是0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱你的王大哥
2012-05-28 · TA获得超过216个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:38.7万
展开全部
你是想要执行的流程吧,基本的我想你应该知道,我就从for循环开始吧,for(i = 100,i <= 200;i++),i初始化为100,小于等于200成立,执行for循环,temp初始化为0,执行第二个for循环,j初始化为2,j<i成立,执行if语句,判断i处以j的余数是否为0,是的话temp自加1,然后j自加1,只要j<i成立就继续执行if的判断,直到j>=i,当j>=i时跳出这子for循环,然后判断temp是否为0,是的话就打印出现在的i值,然后执行父for循环然后i自加1,判断是否<=200,是的话,继续执行,不是的话跳出:这程序的目的就是判断100~200内的是素数的有哪些,并把他们一次打印出来,判断一个数是不是素数是子for循环做的,一次除以2~(自身-1)的整数,余数为0肯定不是素数,所以temp不会为0,所以if(temp == 0)不成立,这个非素数也不会被打印出来,父for循环主要是将i从100加到200,回答完毕
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fisher412823
2012-05-28
知道答主
回答量:19
采纳率:0%
帮助的人:20.6万
展开全部
[100,200]区间内找到除1和自身外不能被整除的数
外面的for(遍历100-200的数){
里面的for(遍历2到i-1){
temp标记是否能被整除;
}
检查temp标记,若不能被任意数整除则输出.
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可可托海的牧羊人Do
2012-05-28 · TA获得超过303个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:89.7万
展开全部
这有什么好说的 嵌套循环 首先i=100 然后100分别对(2,3,4,5。。。。99)求模
然后i=101 再分别求模 依次类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-05-28
展开全部
int main()
{
int i,j,temp;

//找出100-200之间的素数
for(i=100;i<=200;i++)
{
temp=0; //标志位

//循环判断i能不能被小于i的数整除!
for(j=2;j<i;j++)
{
if(i%j==0)
temp++;//如果能够被整除,将标志位加1
}
if(temp==0)//标志为0,说明i不能被任何小于它的整数整除
printf("%d \n",i);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式