Euler Function 2018 杭电多校

翻译:

           在数论中,Euler的函数φ(n)计算直到给定整数n的正整数,它们是n 
的相对素数。它可以更正式地定义为1≤k≤n范围内的整数k,
其中最大公约数gcd(n,k)等于1. 
例如,φ(9)= 6因为1,2 ,4,5,7和8与9相互作用。作为另一个例子,φ(1)= 1,
因为对于n = 1,1到n范围内的唯一整数本身是1,并且gcd(1,1)= 1. 
复合数是一个正整数,可以通过将两个较小的
正整数相乘来形成。等价地,它是一个正整数,至少有一个除数1和它本身的除数。
所以很明显1和所有素数都不是复合数。
在这个问题中,给定整数k,你的任务是找到第k个最小的正整数n,即φ(n)
是一个复合数。
输入输入
的第一行包含一个整数T(1≤T≤100000),表示测试用例的数量。
在每个测试用例中,只有一个整数k(1≤k≤10^ 9)。
输出
对于每个测试用例,打印包含整数的单行,表示答案。

思路 :  打表找规律

#include<stdio.h>
#include<queue>
#include<math.h>
#include<time.h>
#include<string.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<set>
#include<map>
#include<stack>
#define LL long long
#define mem(a,b) memset(a,b,sizeof(a))
#define lowbit(a) a&(-a)
#define PI acos(-1)
#define shortime(a)  std::ios::sync_with_stdio(a);
using  namespace std;
const LL inf=16777216;
//long long cmp(node a,node b){ if(a.x==b.x) return a.r>b.r;return a.x>b.x;}
int maxn (int a,int b,int c){return max(max(a,b),max(b,c));}
int gcd (int a,int b){return b==0?a:gcd(b,a%b);}
int main()
{
   /* for(int i=1;i<=1000;i++)
    {
        int num=0;
        for(int j=1;j<i;j++)
        {
            if(gcd(i,j)==1) num++;
        }
        int j;
        for( j=2;j<=sqrt(num);i++)
        {
            if(num%j==0) break;
        }
        if(j!=(int )(sqrt(num)+1))
        {
            printf("%d ",i);
        }
    }*/
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int x;
        scanf("%d",&x);
        if(x==1) printf("5\n");
        else printf("%d\n",x+5);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41485193/article/details/81291814
今日推荐