| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖
标题:一个关于循环的貌似简单的问题!
只看楼主 加入收藏
低调的哥额
Rank: 2
来 自:四川广安
等 级:论坛游民
帖 子:49
专家分:30
注 册:2012-6-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
一个关于循环的貌似简单的问题!
求某一个数是否是素数
main()
{   int i,num;
scanf("%d",&num);
   i=2;
   while (i<num)     //这儿有点不明白( i<num 和i<=num 没有区别吗? 为什么2种情况运行结果是一样的 )
   {   if(num%i==0)
     break;
      i++;
       }
        if(i== num)  //这儿 如果上面是(i<=num) 还可以理解 如果是(i<num)当为素数的时候比如输入5的时候,i是等于4还是5,
         printf("yes!\n");
         else printf("NO!\n");
          getch();
    }
2012-11-20 00:26
低调的哥额
Rank: 2
来 自:四川广安
等 级:论坛游民
帖 子:49
专家分:30
注 册:2012-6-6
收藏
得分:0 
有什么区别啊

目标→黑客←努力 qq群281123877,讨论 奋斗!
2012-11-20 00:26
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
收藏
得分:0 
楼主你好,素数是只能被1和它本身整除的数。这个代码的含义是从2到num-1遍历一遍,看是否能被num整除,如果都不能被num整除,那num就是素数。所以while循环里要写i<num,这样就可以判断从2到num-1内的所有数。如果这个数是素数,会从i从2循环到num-1,继续增加到num的时候不满足i<num退出while执行后面的语句,此时用if判断为素数。
你所说的那个地方i<num num=5的时候i是5,因为while是先判断后i加1的。
2012-11-20 08:06
a635958000
Rank: 4
等 级:业余侠客
帖 子:55
专家分:253
注 册:2012-10-26
收藏
得分:10 
回复 楼主 低调的哥额
while (i<num)     //这儿有点不明白( i<num 和i<=num 没有区别吗? 为什么2种情况运行结果是一样的 )
   i<num与i<=num是有区别的,当i<num时,当某数为素数时假如是5,在while循环中当i=4时,num%i依然不是0;因此就执行i++将i变成5退出循环;
若i<=num时,i=4时,num%i不是0,因此就执行i++,i变成5,没有退出循环,执行num%i=0,因此执行break,强制结束循环。但是他们的结果是一样的,
就是i最后都变成5。
   {   if(num%i==0)
     break;
      i++;
       }
        if(i== num)  //这儿 如果上面是(i<=num) 还可以理解 如果是(i<num)当为素数的时候比如输入5的时候,i是等于4还是5,
当i<num时,i变成4的时候,num%i不为0;因此就执行i++将i变成5,while循环的条件是i<5,因此退出循环。这个时候i是等于5的。
         printf("yes!\n");
         else printf("NO!\n");
          getch();
    }
2012-11-20 08:32
愤怒的木瓜
Rank: 1
来 自:云南
等 级:新手上路
帖 子:12
专家分:8
注 册:2012-11-19
收藏
得分:5 
程序代码:
#include <stdio.h>
void main()
{   int i,num;
scanf("%d",&num);
   i=2;
   while (i<mun)     //因为if句的存在,while句的作用只是提供循环,楼主可直接改为while(1)。
   {   if(num%i==0)
     break;//此处用了break,当num%i为0时循环被打破,也就是说,i值最大只能为num;
      i++;
      printf("%d ",i);
       }
        if(i== num)  //你已经在while句里用IF句判断过了~你输入5,i值是5~~
         printf("yes!\n");
         else printf("NO!\n");
          getchar();
}
2012-11-20 08:37
joinking
Rank: 2
来 自:广东汕尾
等 级:论坛游民
帖 子:26
专家分:15
注 册:2012-9-16
收藏
得分:0 
搂主说的判断i<num和i<=num的输出结果是一样的,如果是i<m,那么只有i=num的时候循环才不执行或者执行了break跳出了循环。
如果条件是i<num,假设输入是素数,那么i=num时while循环语句才不执行,跳出循环,i=num,那么下面的if语句成立,输出是yes\n.
如果条件是i<=num,输入时素数,那么i=num时循环还继续执行,不过因为下面的if(num%i==0)成立,他还是会跳出循环,不去执行i++;输出的i还是等于num,结果还是输出yes\n.
这样说搂主能懂吧!

彪悍的人生不需要解释
2012-11-20 08:38
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:5 
好多个循环 好晕哟,代码不该这么看 真心的

条件判断 你就把条件判定的条件用数学表达式弄出来好不好呢

这个模拟计算机运行过程  看代码的方式 不是个好习惯

我要成为嘿嘿的黑客,替天行道
2012-11-20 08:40
低调的哥额
Rank: 2
来 自:四川广安
等 级:论坛游民
帖 子:49
专家分:30
注 册:2012-6-6
收藏
得分:0 
回复 3楼 youngdavid
但写成i<=sum程序也一样执行啊

目标→黑客←努力 qq群281123877,讨论 奋斗!
2012-11-20 19:12
低调的哥额
Rank: 2
来 自:四川广安
等 级:论坛游民
帖 子:49
专家分:30
注 册:2012-6-6
收藏
得分:0 
回复 4楼 a635958000
谢谢,刚刚运行了下。。。
#include "stdio.h"
main()
{  
    int i;
    for(i=1;i<5;i++)
    {
        
    }
    printf("%d\n",i);
}结果循环结束i=5;

目标→黑客←努力 qq群281123877,讨论 奋斗!
2012-11-20 19:20
低调的哥额
Rank: 2
来 自:四川广安
等 级:论坛游民
帖 子:49
专家分:30
注 册:2012-6-6
收藏
得分:0 
回复 7楼 zhu224039
版主哥能否写个例子条件判断换你说的思路写

目标→黑客←努力 qq群281123877,讨论 奋斗!
2012-11-20 19:23
快速回复:一个关于循环的貌似简单的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018746 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved