zoukankan      html  css  js  c++  java
  • Pseudoprime numbers(快速幂取模)

    Description

    Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a (mod p). That is, if we raise a to the pth power and divide by p, the remainder is a. Some (but not very many) non-prime values of p, known as base-pseudoprimes, have this property for some a. (And some, known as Carmichael Numbers, are base-a pseudoprimes for all a.)

    Given 2 < p ≤ 1000000000 and 1 < a < p, determine whether or not p is a base-a pseudoprime.

    Input

    Input contains several test cases followed by a line containing "0 0". Each test case consists of a line containing p and a.

    Output

    For each test case, output "yes" if p is a base-a pseudoprime; otherwise output "no".

    Sample Input

    3 2
    10 3
    341 2
    341 3
    1105 2
    1105 3
    0 0
    

    Sample Output

    no
    no
    yes
    no
    yes
    yes
    #include<cstdio>
    #include<cmath>
    long long quickpow(long long a,long long p)
    {
    	 long long mod=p;
    	long long ans=1,base=a;
    	while(p)
    	{
    		if(p&1)
    		{
    			ans=(base*ans)%mod;
    		}
    		base=(base*base)%mod;
    		p>>=1;
    	}
    	return ans;
    }
    long long su(int x)
    {
    
    	for(int i=2;i<=sqrt(x)+1;i++)
    	{
    		if(x%i==0)
    		{
    		       return 1;//不是素数输出1 
    	    	}
    	 } 
        return 0;
     } 
    int main()
    {
        long long a,p;
    	while(~scanf("%lld%lld",&p,&a))
    	{
    		if(p==0&&a==0)
    		break;
    		if(quickpow(a,p)==a&&su(p)==1)
    		printf("yes
    ");
    		else
    		printf("no
    ");
    	}
    	return 0;
    }

  • 相关阅读:
    do文件的编写和执行
    AES内部结构(加密部分)
    暂稳态效应攻击
    #computer architecture#memory3
    pandas记录
    selenium+chromeDriver配合使用(运行js脚本)
    selenium + chromeDriver的ip代理设置
    requests记录
    python 记录
    1.文件重命名工具
  • 原文地址:https://www.cnblogs.com/kingjordan/p/12027149.html
Copyright © 2011-2022 走看看