poj 3090
看明白题就知道是欧拉函数。。
//============================================================================ // Name : 3090.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <cstdio> using namespace std; int a[1010], sum[1010]; int N, n; void euler(){ for(int i = 2;i <= 1000;i++){ a[i] = 0; } a[1] = 1; for(int i = 2;i <= 1000;i++){ if(!a[i]){ for(int j = i;j <= 1000;j += i){ if(!a[j]){ a[j] = j; } a[j] = a[j]/i*(i-1); } } } } int main() { freopen("a.txt", "r", stdin); euler(); for(int i = 1;i <= 1000;i++){ sum[i] = sum[i-1]+a[i]; } while(scanf("%d", &N)!=EOF){ for(int T = 1;T <= N;T++){ scanf("%d", &n); printf("%d %d %d\n",T, n, sum[n]*2+1); } } return 0; }