[LightOJ 1370] Bi-shoe and Phi-shoe(歐拉函數快速篩法)
阿新 • • 發佈:2019-01-15
oid name color n) ace div nbsp clas 大於
題目鏈接: https://vjudge.net/problem/LightOJ-1370
題目描述:
給出一些數字,對於每個數字找到一個歐拉函數值大於等於這個數的數,求找到的所有數的最小和。
知識點:
歐拉函數:https://baike.baidu.com/item/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0/1944850?fr=aladdin
1 /* 2 * x的歐拉函數值:小於x且與x互質的數的個數 3 * 性質:素數p的歐拉函數值為p-1; 4 */ 5 #include<cstdio> 6 #include <cstring> 78 using namespace std; 9 10 const int N = 1e6 + 5; 11 bool prime[N] = {1,1,0}; 12 13 //素數打表 14 //用被判斷的數做下標,直接判斷一個數是不是素數. 15 void bool_prime() 16 { 17 for(int i=2;i<N;i++) 18 if(!prime[i]) 19 { 20 for(int j=i+i;j<=N;j+=i) 21 prime[j] = 1; 22 }23 } 24 25 int main() { 26 int T,n,x,flag = 1; 27 long long sum; 28 bool_prime(); 29 for(scanf("%d",&T);T>0;T--) 30 { 31 scanf("%d",&n); 32 sum = 0; 33 while(n--) 34 { 35 scanf("%d",&x); 36 for(int i=x+1;;i++) 37if(!prime[i]) 38 { 39 sum += i; 40 break; 41 } 42 } 43 printf("Case %d: %lld Xukha\n",flag++,sum); 44 } 45 return 0; 46 }
[LightOJ 1370] Bi-shoe and Phi-shoe(歐拉函數快速篩法)