用C++编写求素数程序

来源:百度知道 编辑:UC知道 时间:2024/06/13 23:28:29
用多种方法求,越多越好,谢谢

1 朴素筛法,就是直接试除
2 若a是n的因子,那么n/a也是n的因子,所以如果n有一个大于1的真因子,则必有一个不大于n的1/2次方的因子
3 进一步的,如n是合数,他必有一个素因子不大于n的1/2次方,如要检测一个m以内的数是否为素数需事先建立一个m的1/2次方以内素数表。
4 Miller-Rabbin算法
5 概率算法
6 无条件的素数测试(包含APR算法 Jacobi sum测试 等)
等等

#include<stdio.h>
#include<math.h>
main()
{
int m,i,k;
scanf("%d",&m); //录入一个数
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)break; //若能被m整除,则说明其不是素数,只要有一个就足够说明一切,故成立的话就break;即跳出循环
if(i>=k+1)printf("%d is a prime number !\n"); //若i>k+1;则说明if(m%i==0)条件没有一个成立,则其为一个素数
else printf("%d is not a prime number !\n");
}

我只知道两个,挖空法和测试法