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; }