求解释,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);
}
} 展开
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);
}
} 展开
7个回答
展开全部
//只要一个数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跳出循环出,没必要再向下进行。
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跳出循环出,没必要再向下进行。
展开全部
判别100-200 间的素数吧? 最核心的代码是:
for(j=2;j<i;j++)
{
if(i%j==0)
temp++;
}
他是判别一个数 i 是否能被一个大于1 的自然数整除, 如果能被整除,那就不是素数,此时把temp自增。如果所有的自然数都不能整除i, 那i就是素数,此时temp 是0。
for(j=2;j<i;j++)
{
if(i%j==0)
temp++;
}
他是判别一个数 i 是否能被一个大于1 的自然数整除, 如果能被整除,那就不是素数,此时把temp自增。如果所有的自然数都不能整除i, 那i就是素数,此时temp 是0。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是想要执行的流程吧,基本的我想你应该知道,我就从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,回答完毕
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
[100,200]区间内找到除1和自身外不能被整除的数
外面的for(遍历100-200的数){
里面的for(遍历2到i-1){
temp标记是否能被整除;
}
检查temp标记,若不能被任意数整除则输出.
}
外面的for(遍历100-200的数){
里面的for(遍历2到i-1){
temp标记是否能被整除;
}
检查temp标记,若不能被任意数整除则输出.
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这有什么好说的 嵌套循环 首先i=100 然后100分别对(2,3,4,5。。。。99)求模
然后i=101 再分别求模 依次类推
然后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);
}
}
{
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询