1. 程式人生 > >[LightOJ 1370] Bi-shoe and Phi-shoe(歐拉函數快速篩法)

[LightOJ 1370] Bi-shoe and Phi-shoe(歐拉函數快速篩法)

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>
 7
8 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++) 37
if(!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(歐拉函數快速篩法)