当前位置:首页 » 操作系统 » 快速质数算法

快速质数算法

发布时间: 2022-07-22 11:15:02

Ⅰ 判断是否为质数的快速算法

#include<stdio.h>
#include<stdlib.h>
#define SIZE 1000000
char table[SIZE];
int prime[168]=
{
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47,
53, 59, 61, 67, 71, 73, 79, 83, 89, 97,101,103,107,109,113,
127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,
199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,
283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,
383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,
467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,
577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,
661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,
769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,
877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,
983,991,997
};
int init()
{
int i,j;
memset(table,1,SIZE);
table[0]=table[1]=0;
for(i=0;i<168;++i)
{
for(j=prime[i]*2;j<SIZE;j+=prime[i])
{
table[j]=0;
}
}
}
int main()
{
int i;
init();
while(scanf("%d",&i)!=EOF)
{
printf(table[i]?"yes":"no");
}
return 0;
}

Ⅱ 求质数的最优算法

#include <stdio.h>
int main()
{ int i,j,t;
for (i=2;i<100;i++)
{ t=1;
for (j=2;j<i;j++) /找因数的范围可以是2到一半 或者平方根,甚至 可以 比平方根小的质数,当然要建一个数组
if (i % j ==0)
{ t=0;
break;
}
if (t==1)
printf("%d\n",i);
}
return 0;
}

Ⅲ 统计一亿以内质数个数的最快算法

这段程序是Pascal语言的。计算一亿以内质数个数的时间只要2.4秒。

uses sysutils;

var a:array[2..100000000]of boolean;

n,i,j:longint; t:tdatetime;

begin

readln(n); t:=now;

fillchar(a,sizeof(a),1);

for i:=2 to trunc(sqrt(n)) do

if a[i] then

begin

j:=i+i;

while j<=n do begin a[j]:=false; inc(j,i) end;

end;

j:=1; i:=3;

while i<n do

begin if a[i] then inc(j); inc(i,2) end;

writeln(j,' t=',(now-t)*86400:0:2);

end.

Ⅳ 如何算出一个数的所有质数

1、找到这个数字的平方根m=√m

2、找到不大于m的所有质数。

3、在一张自然数表上划掉所有质数的整数倍(质数本身不划掉)

4、把1划掉。

5、没有划掉的数字就是质数。

例如,我们要找到100以内的所有质数,只需要按照下面的步骤进行:

1、计算100的平方根,是10。

2、10以内的质数有2、3、5、7

3、划掉2、3、5、7的整数倍。首先划掉2的倍数,如4、6、8…、98、100,然后划掉3的倍数,如6、9、12、15、…、99, 重复的就不需要再划掉了。然后划掉5的倍数,7的倍数。

4、最后划掉1。

(4)快速质数算法扩展阅读

质数与黎曼猜想

我们之前谈到:质数与黎曼猜想之间有着千丝万缕的联系。1896年,法国科学院举行比赛:征稿证明黎曼定理。两位年轻的数学家阿达马和德·拉·瓦莱布桑获得了这一殊荣。

实际上这两位数学家并没有证明黎曼猜想,只是获得了一点进展,但是这一点进展就一举证明了欧拉和勒让德的猜想,把素数猜想变成了素数定理。黎曼猜想的威力可见一斑。

1901年,瑞典数学家科赫证明:如果黎曼猜想被证实,那么素数定理中的误差项c大约是√xln(x)的量级。

即便黎曼猜想被证实,人们也只是在质数规律探索的过程中更近了一步,距离真正破解质数的规律,还有很长的路要走。也许质数就是宇宙留给人类的密码。

Ⅳ 求素数最快的算法

如果只是求一个数是否是素数的话,那就直接用了循环判断是否能整除。反过来如果求小于某一个数之内所有的素数的话,那是用筛法来求最为快捷。效率最高。

热点内容
编译隔离 发布:2025-01-20 16:28:54 浏览:358
从哪里看自己的qq账号和密码 发布:2025-01-20 16:22:33 浏览:400
sql语句动态 发布:2025-01-20 16:18:22 浏览:298
sql表或的语句 发布:2025-01-20 16:00:49 浏览:163
西瓜视频怎么缓存不了电影了 发布:2025-01-20 16:00:45 浏览:890
javatimer 发布:2025-01-20 15:55:56 浏览:64
ts使用什么编译器 发布:2025-01-20 15:54:59 浏览:382
数据库中已存在 发布:2025-01-20 15:35:44 浏览:110
压缩超过密度 发布:2025-01-20 15:35:33 浏览:648
和她在一起的日历怎么弄安卓 发布:2025-01-20 15:29:29 浏览:640