poj 3090
递推欧拉函数。
代码:
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
int b[1001];
int n;
void read(){
// ifstream cin("in.txt");
int i,j,k,ans;
for(i=2;i<=1000;i++)
b[i]=i;
for(i=2;i<=1000;i+=2)
b[i]/=2;
for(i=3;i<=1000;i+=2)
if(b[i]==i)
for(j=i;j<=1000;j+=i)
b[j]=b[j]/i*(i-1);
for(i=2;i<=1000;i++)
b[i]+=b[i-1];
cin>>k;
n=k;
while(k--){
cin>>i;
printf("%d %d %d\n",n-k,i,2*b[i]+3);
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号