标题:关于求某数是否是素数的C程序。
只看楼主
Adm〃h
Rank: 2
等 级:论坛游民
帖 子:26
专家分:18
注 册:2012-3-26
结帖率:83.33%
已结贴  问题点数:10 回复次数:3 
关于求某数是否是素数的C程序。
#include <stdio.h>
#include <math.h>
void main()
{
 int m,i,k;                                               //定义变量
 printf("please input m:");                      //提示输入一个m
 scanf("%d",&m);                                 //m变量取地址
 k=sqrt(m);                                        //给变量k赋值
 i=2;                                                //给变量i赋值
 while (i<=k)                                       //while 循环表达式
 {
  if (m%i==0) break;                           //当m%i==0时  不做任何动作并跳出当前循环(我是这样理解这里的break的)
  else                                                //否则 i++
   i++;
  }
  if (i>k)                                            //当i>k时 输出 (...)
   printf("%d is a odd\n",m);
  else                                              //否则 输出(...)
   printf("%d is a even\n",m);
 }          老师用的for语句写的,我用的while 语句写的,算法是模仿老师的。大家帮我看看我后面的程序注释部分有没有错,错的地方麻烦大家帮我改正下。        虽然程序写出来了,但有个问题很纠结,为什么i的取值范围是i~k,我想了很久都没想明白。还有我感觉这样做i值的定义写出来的程序很难让人理解(个人感觉,不知道大家是否有同感),我想换个方式,请问可以吗?如果可以,能讲讲你的算法么?如果不可以,那么请你告诉我为什么。
搜索更多相关主题的帖子: void include please 表达式 
2012-04-16 23:11
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
得分:2 
这里的K 的值是根号M的值,判断M是不是素数也可以让M从2开始除,一直除到M-1,不过这样除会增加计算机运算的时间,从2开始除,除到根号M的地方其实就够了,后面就不需要计算了,因为比如M=9,根号9的值就是3,如果9除以2或者9除以3有一个等于0了,这个9就不是素数了,后面的4到8就不用算了。
除了这个方法能求出这个数是不是素数,别的方法还没有遇到,期待高手解决。
2012-04-16 23:27
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
得分:8 
你的注释也有不对的地方:
scanf("%d",&m);                                 //m变量取地址  ,应该是给变量m赋值;
i=2;                                                //给变量i赋值 , 应该是给变量i赋初值,也就是最开始的那个值,因为i的值在后面是会变化的。
break的意思,你的理解是对的,如果满足条件,就直接跳出当前的这个循环
2012-04-17 00:44
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
得分:0 
为什么i的取值范围是i~k
素数的判别方法是只能被1和本身整除的数,所以从二开始判别,k也可以为m/2,m-1用sqrt(m)是为了减少循环次数
2012-04-17 09:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-365968-1-1.html




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

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