Problem D. Euler Function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 57 Accepted Submission(s): 56
Problem Description In number theory, Euler's totient function φ(n) counts the positive integers up to a given integer n that are relatively prime to n . It can be defined more formally as the number of integers k in the range 1≤k≤n for which the greatest common divisor gcd(n,k) is equal to 1 . For example, φ(9)=6 because 1,2,4,5,7 and 8 are coprime with 9 . As another example, φ(1)=1 since for n=1 the only integer in the range from 1 to n is 1 itself, and gcd(1,1)=1 . A composite number is a positive integer that can be formed by multiplying together two smaller positive integers. Equivalently, it is a positive integer that has at least one divisor other than 1 and itself. So obviously 1 and all prime numbers are not composite number. In this problem, given integer k , your task is to find the k -th smallest positive integer n , that φ(n) is a composite number. Input The first line of the input contains an integer T(1≤T≤100000) , denoting the number of test cases. In each test case, there is only one integer k(1≤k≤109) . Output For each test case, print a single line containing an integer, denoting the answer. Sample Input 2 1 2 Sample Output 5 7 Source 2018 Multi-University Training Contest 3 Recommend chendu | We have carefully selected several similar problems for you: 6331 6330 6329 6328 6327 Statistic | Submit | Discuss | Note #include<iostream> #include<algorithm> #include<string> #include<map>//int dx[4]={0,0,-1,1};int dy[4]={-1,1,0,0}; #include<set>//int gcd(int a,int b){return b?gcd(b,a%b):a;} #include<vector> #include<cmath> #include<stack> #include<string.h> #include<stdlib.h> #include<cstdio> #define mod 1e9+7 #define ll long long #define maxn 205 #define MAX 1000000000 #define ms memset using namespace std; int n; /* 题意很简单。 找规律,发现只有1,2,4,6,不行。 因为欧拉函数数学表达的关系, 可以简单的证明。 因子p有2或者3才能形成素数,还不能重复出现。 */ int main() { int t;scanf("%d",&t); while(t--) { scanf("%d",&n); if(n==1) puts("5"); else if(n==2) puts("7"); else cout<<n+5<<endl; } return 0; } |