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<iostream> using namespace std; #include<math.h> long GCD(long a,long b)//a,b的最大公约数 { long c; if(a>b) { c=a%b; while(c!=0) { a=b; b=c; c=a%b; } return b; } else { c=b%a; while(c!=0) { b=a; a=c; c=b%a; } return a; } } long f(long m)//m以内与它互素的数的个数 { long num(0); long d[20]={0};//用来存放m的约数 int n(0); long m1=m; for(long i=2;i<=m;i++) { if(m%i==0) { while(m%i==0) { m=m/i; } d[n++]=i; } } for(i=0;i<n;i++) m1=m1*(d[i]-1)/d[i]; return m1; } void main() { long m,k; long l,r; long b; long n=0;//与m互素的数的个数 while(true) { cin>>m>>k; n=0; if(f(m)>k) { for(long j=1;n!=k;j++) { if(GCD(j,m)==1) { n++; } } cout<<j-1<<endl; } else { b=2; while(b*f(m)<k) { b=b*2; } l=0; r=b; while(l<b) { if(b*f(m)>k) { r=b; b=(l+r)/2; } else { l=b; b=(l+r)/2; } } n=l*f(m); for(long j=l*m;n!=k;j++) { if(GCD(j,m)==1) { n++; } } cout<<j-1<<endl; } } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator