两种求素数的方法有出入,帮忙对比下!!!!

hua_zhixing_ 2009-09-20 08:48:10
方法一:
#include<iostream>
#include<bitset>
#define N 10000000
using namespace std;
int main(){
bitset<N>* p=new bitset<N>;
p->set();
for(int i=2; i<=10000; ++i)
if(p->test(i))
for(int j=i*i; j<p->size(); j+=i)
p->reset(j);
int num=0;
for(int i=2; i<N; ++i)
if(p->test(i))
num++;
cout<<endl<<num<<endl;
delete[] p;
return 0;
}
//5761455个素数

方法二:
#include<iostream>
#include<bitset>
#include<cmath>
#define N 10000000
using namespace std;
int main(){
bitset<N> p;
for(int i=2; i<sqrt(N); i++)
for(int j=i; j<=N/i; j++)
p[i*j]=1;
int num=0;
for(int i=2; i<111; ++i)
if(!p[i]) cout<<i<<" ";
for(int i=2; i<N; ++i)
if(!p[i]) num++;
cout<<endl<<num<<endl;
return 0;
}
//664579个素数
...全文
179 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
汗晕倒 2009-10-10
  • 打赏
  • 举报
回复
方法一对阿
for(int i=2; i<=10000; ++i)
if(p->test(i))
for(int j=i*i; j<p->size(); j+=i)
p->reset(j);
这个是筛选~~,将2到10000,各自的倍数位置0。
汗晕倒 2009-10-10
  • 打赏
  • 举报
回复
for(int i=2; i<111; ++i)
if(!p[i]) cout<<i<<" ";
这句有什么用
zhylzf 2009-10-10
  • 打赏
  • 举报
回复
学习中
绿色夹克衫 2009-10-10
  • 打赏
  • 举报
回复
我是看个数的,1000万里,质数肯定不到500万个!

using System;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int n = 10000000, count = 0;
int m = (int) Math.Sqrt(n);
bool[] flag = new bool[n + 1];

for (long i = 2; i <= n; i++)
{
if (!flag[i])
{
count++;
if (i <= m)
for (long j = i * i; j <= n; j += i)
flag[j] = true;
}
}

Console.WriteLine(count);
}
}
}

写了一个简单的,结果跟LZ第2种的答案一样!

[Quote=引用 4 楼 haoshen1987 的回复:]
引用 1 楼 litaoye 的回复:
第一个的结果肯定不对,第二个的结果看起来差不多。
程序的思路都是一样的,属于筛法!

希望如君所言,第一种方法是书的,第二种方法是我写的,但总有点顾及。
[/Quote]
hua_zhixing_ 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 litaoye 的回复:]
第一个的结果肯定不对,第二个的结果看起来差不多。
程序的思路都是一样的,属于筛法!
[/Quote]
希望如君所言,第一种方法是书的,第二种方法是我写的,但总有点顾及。
hua_zhixing_ 2009-10-02
  • 打赏
  • 举报
回复
能不能详细点撒!!!!!!!!!
绿色夹克衫 2009-09-20
  • 打赏
  • 举报
回复
第一个的结果肯定不对,第二个的结果看起来差不多。
程序的思路都是一样的,属于筛法!
logiciel 2009-09-20
  • 打赏
  • 举报
回复
方法二中,当j=N/i时,p[i*j]==p[N],将产生越界错误。因此,bitset<N> p要改为bitset<N+1> p。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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