D - Problem D. Euler Function (歐拉函數找規律)

In number theory, Euler's totient function φ(n)φ(n) counts the positive integers up to a given integer nn that are relatively prime to nn. It can be defined more formally as the number of integers kk in the range 1≤k≤n1≤k≤n for which the greatest common divisor gcd(n,k)gcd(n,k) is equal to 11. 
For example, φ(9)=6φ(9)=6 because 1,2,4,5,71,2,4,5,7 and 88 are coprime with 99. As another example, φ(1)=1φ(1)=1 since for n=1n=1 the only integer in the range from 11 to nn is 11itself, and gcd(1,1)=1gcd(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 11 and itself. So obviously 11 and all prime numbers are not composite number. 
In this problem, given integer kk, your task is to find the kk-th smallest positive integer nn, that φ(n)φ(n) is a composite number. 

Input

The first line of the input contains an integer T(1≤T≤100000)T(1≤T≤100000), denoting the number of test cases. 
In each test case, there is only one integer k(1≤k≤109)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

 

【解析】

題意:給了一個歐拉函數的定義:對正整數n,歐拉函數是小於n的正整數中與n互質的數的數目(特別的φ(1)=1),

比如說φ(9) = 6(1,2,3,4,5,7,8共六個)。給你一個k,找出第k小的歐拉函數中結果是合數的自變量x的大小。

10^9次方了都,我猜就是規律題了。先自己打表列出來了,然後就很容易發現規律了。

#include <bits/stdc++.h>
using namespace std;
/*int gcd(int a, int b)
{
	return b == 0 ? a : gcd(b, a%b);
}*/
int main()
{
	int t;
	scanf("%d", &t);
	while (t--)
	{
		int k;
		scanf("%d", &k);
		/*for (int j = 3; j < 100; j++)
		{
			int ans = 1;
			for (int i = 2; i < j; i++)
			{
				if (gcd(i, j) == 1)ans++;
			}
			printf("%d %d\n", j, ans);
		}*/
		if (k == 1)printf("5\n");
		else printf("%d\n", k + 5);
	}
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章