就塞到vjudge上一直提示RE,提交到洛谷就会有个vjudge.uva_public_account的提示……也不知道是怎么回事……
#include <iostream>
#include <cstdio>
#include <cmath>
#include <ctime>
#define MAXN 1100005
using namespace std;
bool num[MAXN]={0};//false为质数
int prime[MAXN],N,cnt;
long long int sumEular[MAXN]={0};
void Prime(){//Right
cnt=0;
for(int i=2;i<MAXN;++i){
if(num[i]==false)prime[cnt++]=i;
for(int j=0;j<cnt&&i*prime[j]<MAXN;++j){
num[i*prime[j]]=true;
if(i%prime[j]==0)break;
}
}
}
int n,ans,Start,End,timesum=0;
int main(){
//Start=clock();
Prime();
/*for(int i=0;i<cnt;++i)
cout<<prime[i]<<" ";
cout<<endl;*/
for(int t=2;t<=MAXN;++t){
n=t;
ans=n;
for(int i=0;i<cnt&&prime[i]*prime[i]<=n;++i){
if(n%prime[i]==0)
ans=ans-ans/prime[i];
while(n%prime[i]==0)
n/=prime[i];
}
if(n>1)ans=ans-ans/n;
sumEular[t]=sumEular[t-1]+ans;
}
//End=clock();
//timesum+=End-Start;
// cout<<"time sum="<<timesum*1000/CLOCKS_PER_SEC<<endl;
while(cin>>N&&N!=0){
//Start=clock();
//cout<<"Eular["<<t<<"]="<<Eular[t]<<endl;
//End=clock();
cout<<sumEular[N]<<endl;
//timesum+=End-Start;
// cout<<"time sum="<<timesum*1000/CLOCKS_PER_SEC<<endl;
}
return 0;
}
有没有大佬帮我看下我这个蒟蒻的代码