求0-2000内的所有质数(筛选法)
核心算法:我们先设保存整数0~N的数组为sieve,用“逐步求精”的方法来得出算法:
[定理1]若比素数P小的所有素数的倍数均已从sieve中删去,且P*P > N,则sieve = primes(2…N)。其中:primes(2..N)表示2..N之间所有的素数。
引用:http://blog.csdn.net/zzjjzzgggg/article/details/2493957
Code://Func.h
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::endl;
void PrintNums(int num)
{
bool *arr=new bool;
//初始化数组
for(int i=0;i<num;i++)
{
arr=true;
}
//去非素数
for(int i=2;i<=num;++i)
{
if(arr==true)
{
for(int j=2*i;j<=num;j+=i)
{
arr=false;
}
}
}
//打印素数
for(int i=0;i<num;i++)
{
if(arr==true)
{
cout<<i+1<<endl;
}
}
}
作者:xufei96 发表于2012-1-20 10:10:28 原文链接
页:
[1]