怎样求一亿里的素数!

aicong 2009-06-03 10:52:27
请问怎样求一亿里的素数?
...全文
268 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xXxxXxxX.x 2011-04-08
  • 打赏
  • 举报
回复
验证一个数是否是素数,很简单,看看其是否能被小于等于其平方根的素数整除就可以了。
chengzhe 2011-04-08
  • 打赏
  • 举报
回复
关键是高效
枫继续吹 2011-04-08
  • 打赏
  • 举报
回复

#include <iostream>

using namespace std;

int main()
{
for (int i=1;i<100000000;i++)
{
int j=i-1;
int counter=0;
while (j>1)
{
if (i%j==0)
counter++;
j--;
}
if (counter==0)
cout << i << endl;
}
return 0;
}
「已注销」 2011-04-08
  • 打赏
  • 举报
回复
顶。好像不太难啊。
chengzhe 2011-04-08
  • 打赏
  • 举报
回复
有个判素问题概率算法,好像叫做费尔马(Fermat)定理。 你google下吧
qinjuning 2011-04-08
  • 打赏
  • 举报
回复
最简单的算法就是,使用位来表示每个数。1代表是素数,0代表非素数。C++里有个位数组bitset。
然后通过两层循环使得素数的倍数(即能整除素数的数)置为0 .
calven_2521 2011-04-08
  • 打赏
  • 举报
回复
素数是指能被自己和1整除的数,弄一个for循环 然后判断下条件可以解决
mLee79 2011-04-08
  • 打赏
  • 举报
回复
这么小的范围,平凡的筛法足够了。。
赵4老师 2011-04-08
  • 打赏
  • 举报
回复
先求出2~10000之间的素数,对10000以上一亿以下的n逐个除以2~min(sqrt(n),10000)之间的素数,如果都除不尽,n就是素数.
adventurelw 2009-06-10
  • 打赏
  • 举报
回复
验证一个数是否是素数,很简单,看看其是否能被小于等于其平方根的素数整除就可以了。
arong1234 2009-06-10
  • 打赏
  • 举报
回复
32bit内的数几乎都不需要考虑效率,很快就可以算完了
大素数一般用stein算法之类的,比较不错
http://blog.vckbase.com/arong/archive/2004/06/15/458.aspx
[Quote=引用 3 楼 liguoiiii 的回复:]
我认为,如果考虑效率问题,求很大的一个数(比如1亿)以内的素数和求较小的数以内的素数是不一样的。
比如,如果求超过int所能表示的范围的数以内的素数,那问题就复杂了。当然,1亿还是可以用int来表示的。
可以考虑用string来表示一个数,它的好处是可以处理无限深度的数,直至你用完所有的内存为止。
[/Quote]
liguoiiii 2009-06-10
  • 打赏
  • 举报
回复
我认为,如果考虑效率问题,求很大的一个数(比如1亿)以内的素数和求较小的数以内的素数是不一样的。
比如,如果求超过int所能表示的范围的数以内的素数,那问题就复杂了。当然,1亿还是可以用int来表示的。
可以考虑用string来表示一个数,它的好处是可以处理无限深度的数,直至你用完所有的内存为止。
Qlaiaqu 2009-06-04
  • 打赏
  • 举报
回复
求10以内的素数和求100000000以内的素数算法是一样的
stupid511495 2009-06-04
  • 打赏
  • 举报
回复
顶下~~不知道~

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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