素数为什么要这样求

mqcy18 2010-08-27 07:46:17
题目是这样的:
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
      则表明此数不是素数,反之是素数。       
2.程序源代码:

#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <math.h>
//---------------------------------------------------------------------------

#pragma argsused
void main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
{
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;
break;
}
if(leap)
{
printf("%7d",m);
h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\n The total is %d",h);

getchar();
}

在BCB6中,运行通过,共有21个素数,但不明白的是,变量K值
k=sqrt(m+1);
为什么要这样求,请教大侠指点。
...全文
173 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mqcy18 2010-08-29
  • 打赏
  • 举报
回复
非常感谢,没想到一个素数引出这么多知识点
lhy 2010-08-28
  • 打赏
  • 举报
回复
合数至少可以分解为2个数的乘积,其中最小的必然要小于或等于合数的平方根。
mqcy18 2010-08-28
  • 打赏
  • 举报
回复
不行了,google的素数超出了理解范围了
e_board 2010-08-28
  • 打赏
  • 举报
回复
google 一下你会知道的更多。呵呵
mqcy18 2010-08-28
  • 打赏
  • 举报
回复
我的那个神呀,原以为素数就是只能被1和本身整除的自然数,谁知baidu了一下,素数这么复杂。
bigfog 2010-08-28
  • 打赏
  • 举报
回复
去看数学方面的书更好!
ccrun.com 2010-08-28
  • 打赏
  • 举报
回复
百度一下,你就被骗。
google才是最好的老师。CSDN的回复,多一半都是从搜索引擎抄来的,转载者甚至可能不知道转载的代码是什么意思。
AFreshGirl 2010-08-27
  • 打赏
  • 举报
回复
你想问为什么不是 k=sqrt(m)而是 k=sqrt(m+1)是不是?

AFreshGirl 2010-08-27
  • 打赏
  • 举报
回复
你搞清楚什么是素数没?

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧