poj 3641 Fermat 与素数的判断

来源:互联网 发布:greenplum数据集市 编辑:程序博客网 时间:2024/06/04 18:47

题意:给出p和a,判断p是否为非素数并且也满足a^p=a(mod p),如果是,输出yes,否则输出 no。

简单的素数判断!,与fermat定理的应用。

#include<iostream>#include<cstdio>#include<cstring>typedef __int64 INT;using namespace std ;bool Isprime(int num){if((num>2&&num%2==0)||num==1) return 0;for(int i=3;i*i<=num;i+=2){if(num%i==0) return 0;}return 1;}INT Format_Mod(INT a,INT k,INT m){INT ans=1;while(k){if(k&1) ans=a*ans%m;a=(a*a)%m;k>>=1;}return ans;}int main(){INT a,p,res;    while(scanf("%I64d %I64d",&p,&a),(a||p)){if(!Isprime(p)){res=Format_Mod(a,p,p);if(res==a) puts("yes");else puts("no");}else puts("no");    } return 0 ;}


原创粉丝点击