导航:首页 > 源码编译 > 素数的个数算法

素数的个数算法

发布时间:2023-01-15 17:37:24

① 实现用于计算素数的算法

#include <stdio.h>
void main()
{
int num[10] = {2,3,4,5,6,7,8,9,10,11};
int *temp = num; // 用于临时存放素数
int j=0;

for(int i=0;i<10;i++)
{
if(num[i]%2 != 0 )
{
*temp++ = num[i];// 不是2的倍数,就放入temp中
j++; // 用于记录素数的个数,以便之后的循环使用
}
}
for(int i=0;i<j;i++)
{
printf("%d\n",temp[i]);// 输出所有素数
}

}

② 素数算法

素数在计算机中经常被运用于计算机安全(密码相关的计算),所以研究一下素数的判断算法是相当有必要的。所以现在就来看一下两种比较常见的算法,试除法和Eratosthenes算法吧!

用需要验证的数 N 逐个除以从 2 开始至 N-1 中的所有数,若能被一个数整除,表示它有一个因数,说明数 N 不是素数;若一直到 N-1 都不能被整除,则说明 N 是素数。(当然我们对于因数的判断不必计算到 N-1,只需要到 就可以了)

Eratosthenes算法的实现,其实就像是一个筛子,每次过滤掉合数,最后剩下的就是素数了,例如:如果要找出2~10000之间所有素数的算法,可以先过滤调用 2 的倍数,再过滤掉 3 的倍数,依次再5,7,11,13...97 就是
以内的所有素数。剩下的就都是素数了。

两种方法测试1000000个数据中找素数,对比如下

结果:

显然,Eratosthenes算法效率高得多了。

③ c语言求素数的算法

根据素数的性质,代码设计如下:

设计一:判断n是否能被1~n-1整除,不能整除为素数

#include<stdio.h>

int main()

{

int i, n;

scanf("%d", &n);

for (i = 2; i < n ; i++)

{

if (n%i == 0)

break;

}

if (i < n) printf("This is not a prime.");

else printf("This is a prime.");

return 0;

}

设计二:判断n是否能被2~√n间的整数整除,不能整除为素数

#include<stdio.h>

#include<math.h>

int main()

{

int n,i;

double k;

scanf("%d", &n);

k = sqrt(n);

for (i = 2; i <= k;i++)

{

if (n%i == 0) break;

}

if (i <=k) printf("This is not a prime.");

else printf("This is a prime");

return 0;

}

(3)素数的个数算法扩展阅读:

1.素数的定义是只能被1和他本身整除,1不是素数.因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,这是一个算法.(写到算法时,我只能写出用它除以比他小的所有数,造成运算速度低下)

2.如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。由此可以得到一个法2较快的素数判断算法

阅读全文

与素数的个数算法相关的资料

热点内容
单片机方式0输入 浏览:214
云服务器华为云 浏览:12
linux如何操作服务器环境搭建 浏览:814
六度人脉pdf 浏览:958
pdf是英文的 浏览:475
java数据爬虫 浏览:357
word做成pdf格式 浏览:678
批处理编程教程 浏览:579
哈希算法源码阿里云 浏览:706
vue编译xcode 浏览:495
pdftodjvu 浏览:151
jxl读取exceljava 浏览:485
本科学历学计算机编程 浏览:189
电脑中没有解压文件如何设置 浏览:171
安卓手机如何打开以图搜图 浏览:192
反编译后不能搜索位置 浏览:482
离心式压缩机最小转速 浏览:957
什么叫程序员加班卖命 浏览:273
共享文件夹加密码怎么加 浏览:23
一个程序员可以加班吗 浏览:134