zoukankan      html  css  js  c++  java
  • POJ 3641 Pseudoprime numbers

    Pseudoprime numbers
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 4864   Accepted: 1872

    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-a 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
    

    Source

     
    //给你一个数 p和一个数 a, 若p是素数输出no,a的p次方模p等于a输出yes,否则输出no
    #include <iostream>
    #include <stdio.h>
    #include <cmath>
    using namespace std;
    bool is_prime(int n)
    {
         int i,m=sqrt(double(n));
    	 for(i=2;i<=m;i++)
    		 if(n%i==0)
    			 return 0;
    	 return 1;
    }
    int main()
    {
    	int q,a,tq;
    	__int64 ta,i;
        while(scanf("%d%d",&q,&a),q||a)
    	{
    		if(is_prime(q))
    		{
    			printf("no\n");continue;
    		}
             tq=q; i=a;
    	    for(ta=1;tq>0;tq=tq>>1,i=(i*i)%q)
    		{ 
    		   if(tq&1) ta=(ta*i)%q;
    		}
    		if(ta==a)
    		   printf("yes\n");
    		else
    			printf("no\n");
    
    	}
        return 0;
    }
  • 相关阅读:
    收藏的 30 个CSS 代码段
    Power designer 15生成sql server 2005/2008列注释
    华为网盘
    敏捷宣言(一)
    敏捷宣言(三) Scrum是一种敏捷实践
    敏捷宣言(二) 何为敏捷
    我也曾哭过[转]
    你以为我穷,不好看,就没有感情吗?[转]
    关于异性朋友
    Gone With the Wind[转]
  • 原文地址:https://www.cnblogs.com/372465774y/p/2579930.html
Copyright © 2011-2022 走看看