大素数高效算法判断
来源:互联网 发布:触摸屏设备 软件开发 编辑:程序博客网 时间:2024/04/29 14:11
前段日子我也在做素数,下面是我的一个总结,看到那个2秒搞定的,我还真想去看看
当数字小于1000000时,可以用简单的判断
int isprime(int n) { int i; for(i=2;i<=sqrt(n);i++) if (n%i==0) return 0; return 1; }
但当数值在1000000到100000000时
介绍一种方法
prime={2,3,5,7,11,13,17,……}为事先做好的素数表
如果需要判断的数最大为100000000,则prime的最大元素为大于10000的最小素数即可
//素数表生成法: int t[10010]={0},prime[3000];//3000可能有点大,具体多少运行了,就知道了 int len; void getprime(void) { int i,j; t[0]=t[1]=1; //t[i]=1,表示该数不是素数,被筛除 for(i=2;i <=sqrt(10010);i++) { if(!t[i]) { for(j=i+i;j<10010;j+=i) t[j]=1; } } len=0; for(i=2;i <10010;i++) { if(!t[i]) prime[len++]=i; } } int isprime(long n) { int i; while(prime[i]*prime[i] <=n) { if(n%prime[i]==0) return 0; i++; } return 1; }
如果数值大于100000000时
可以用Miller-Rabbin素数测试法,判断是否为素数
int Miller_Rabbin(long long n) { long long i,s,a; s=10; //s的值可以根据需要变大 // randomize(); for(i=0;i <s;i++) { a=long long(rand()%(n-1)+2); //自动生成受限 if(modular_exp(a,n-1,n)>1) return 0; } return 1; } long long modular_exp(long long a,long long b,long long c)//求a^b%c该函数受限 { if(a==0) return 0; if(b==0) return 1; if(b==1) return a%c; return (a*modular_exp(a,b-1,c))%c; }
最普通的筛法:(算法竞赛必会)
#include<stdio.h>#include<stdbool.h>int main (void){ int n=100,i,j; bool prime[101]; //C99 bool在#include<stdbool.h>中 memset(prime,1,sizeof(prime));//全定义为素数 prime[0]=prime[1]=0; //0和1不是素数 for (i=2; i<=sqrt(n); i++) { if(prime[i]) { for(j=i*i; j<=n; j+=i)//j=i*i是j=i+i的优化 { prime[j]=0; } } } int k=0; for(i=0; i<=n; i++) { if(prime[i]) { k++; printf("%d ",i); } } printf("\n~~~%d ",k); return 0;}
0 0
- 大素数高效算法判断
- 高效判断素数的算法
- 素数判断算法(高效)
- 高效判断素数方法
- 高效判断素数方法
- 素数的高效判断
- 高效判断素数方法
- 高效判断素数
- 判断n以内的素数(高效算法)
- 高效的nextPrime算法(参考l链接中的高效的素数判断)
- 素数判断(朴素、高效)
- 判断素数的高效方法
- 【HDU4910】高效判大素数
- miller_robin判断大素数
- Miller_Rabin 大素数判断
- 大素数的判断
- 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路
- 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路
- 美国硅谷
- 霍夫曼编码/译码器
- 加载并获取jar包中某个类的某个方法
- 全排列
- nagios插件之登陆防火墙实现session监控
- 大素数高效算法判断
- Sql 分割字符串
- 百度定位sdk Couldn't load locSDK4 from loader dalvik
- 【VBA研究】如何在if中判断一个值为null的变量
- ubuntu git钩子笔记
- 大型项目架构特点
- 23种设计模式彩图
- sql优化查询
- ListView控件