| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
费马小定理应该是正确的吧?有哪位大虾帮忙看看我的程序是哪里错了!!听说有这么个玩意,就想试试看,结果总不过,郁闷!!
#include<stdio.h>
int mod(int a,int p,int m)
{
__int64 x;
if(p==1) return a%m;
if(p==0) return 1;
if(p%2)
{x=mod(a,p/2,m);x=(((x*x)%m)*a)%m;return x;}
else
{x=mod(a,p/2,m);x=(x*x)%m;return x;}
}
int n,i,j,k,p,pim[200],m,num[1000];
int main(int argc, char* argv[])
{
m=0;
for(i=2;i<=1000;i++)
{
if(num[i]==0)
{
for(j=i*2;j<=1000;j+=i)
{
num[j]=1;
}
}
}
for(i=2;i<1000;i++)
{
if(num[i]==0)
{
m++;
pim[m]=i;
}
}
while(scanf("%d",&p)>0)
{
if(p==0) break;
for(i=2;i<=m;i++)
{
j=p-pim[i];
if(mod(2,j-1,j)==1)
{break;}
}
printf("%d = %d + %d\n",p,pim[i],j);
}
return 0;
}
这是小弟的程序。。。
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator