素数筛选与快速幂取模

来源:互联网 发布:python数据采集 pdf 编辑:程序博客网 时间:2024/05/18 03:11
#include <stdio.h>#include <math.h>int prime[65002]={0};void Init(){     int i,j;     int n=(int)sqrt(65000+1);     for( i=2;i<=65000;i++) prime[i]=1;     for( i=2;i<=n;i++)     if(prime[i])        for( j=i*i;j<=65000;j+=i)           prime[j]=0;}int Pow_mod(int a,int n,int m){    if(n==1) return a%m;    unsigned ans=Pow_mod(a,n/2,m);    ans=(ans*ans)%m;    if(n%2==1) return ans*a%m;    return ans;}int main(){    int i,n,ans;    Init();    while(scanf("%d",&n)==1)    {       if(!n) break;       ans=1;       if(!prime[n])       for( i=2;i<n;i++)          if(Pow_mod(i,n,n)!=i)          { ans=0; break; }       if(ans&&!prime[n])           printf("The number %d is a Carmichael number.\n",n);       else printf("%d is normal.\n",n);    }    return 0;    }

原创粉丝点击