hdu 2138 How many prime numbers (Miller Rabbin大质数判定)
2017-02-16 16:38
330 查看
How many prime numbers
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 18144 Accepted Submission(s): 6180
[align=left]Problem Description[/align]
Give you a lot of positive integers, just to find out how many prime numbers there are.
[align=left]Input[/align]
There are a lot of cases. In each case, there is an integer N representing the number of integers to find. Each integer won’t exceed 32-bit signed integer, and each of them won’t be less than 2.
[align=left]Output[/align]
For each case, print the number of prime numbers you have found out.
[align=left]Sample Input[/align]
3
2 3 4
[align=left]Sample Output[/align]
2
[align=left]Author[/align]
wangye
[align=left]Source[/align]
HDU 2007-11 Programming Contest_WarmUp
[align=left]Recommend[/align]
威士忌 | We have carefully selected several similar problems for you: 2136 1431 2132 2139 2012
题解:Miller Rabbin大质数判定
控制一下尝试的次数,此题容易TLE
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define LL long long
using namespace std;
int n;
LL quickpow(LL num,LL x,LL p)
{
LL base=num%p; LL ans=1;
while (x) {
if (x&1) ans=ans*base%p;
x>>=1;
base=base*base%p;
}
return ans;
}
bool miller_rabbin(LL n)
{
if (n==2) return true;
if (n<2||!(n&1)) return false;
LL t=0;
LL a,x,y,u=n-1;
while (!(u&1)) t++,u>>=1;
for (int i=0;i<=100;i++) {
a=rand()*rand()%(n-1)+1;
x=quickpow(a,u,n);
for (int j=0;j<t;j++) {
y=x*x%n;
if (y==1&&x!=1&&x!=n-1) return false;
x=y;
}
if (x!=1) return false;
}
return true;
}
int main()
{
freopen("a.in","r",stdin);
freopen("my.out","w",stdout);
while (scanf("%d",&n)!=EOF){
int cnt=0;
for (int i=1;i<=n;i++) {
int x; scanf("%d",&x);
cnt+=miller_rabbin((LL)x);
}
printf("%d\n",cnt);
}
}
相关文章推荐
- HDU 2138 How many prime numbers 质数个数
- hdu 2138 How many prime numbers(数论:素数判定)
- How many prime numbers HDU - 2138(素数判定)
- HDU 2138 How many prime numbers(大数字素数判定)
- HDU-2138 How many prime numbers
- hdu-2138- How many prime numbers
- hdu 2138 How many prime numbers
- hdu 2138 How many prime numbers
- hdu 2138 How many prime numbers(miller_rabin?)
- HDU 2138 How many prime numbers
- 【HDU】2138 How many prime numbers
- hdu 2138 How many prime numbers
- HDU 2138 How many prime numbers(米勒拉宾素数测试算法)
- HDU 2138 How many prime numbers
- hdu 2138 How many prime numbers(求素数)
- HDu 2138 How many prime numbers 高效Miller素数测试
- HDU 2138 How many prime numbers
- hdu 2138 How many prime numbers
- hdu 2138 How many prime numbers_Miller-Rabin算法模板
- hdu-2138-How many prime numbers