HDU 6322 Problem D. Euler Function(数论)

本文探讨了如何找出欧拉函数值为合数的数字,并提供了相应的算法思路及实现代码。通过对数字n进行质因数分解,可以确定欧拉函数φ(n)是否为合数。文中还给出了具体情况下φ(n)为合数的条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

输出第kk个欧拉函数值为合数的数字

Input

第一行一整数T表示用例组数,每组用例输入一整数kk(1T105,1k109)

Output

输出第kk个欧拉函数值为合数的数字

Sample Input

2
1
2

Sample Output

5
7

Solution

n质因子分解有n=pa11...pammn=p1a1...pmam,那么φ(n)=(p11)...(pm1)pa111...pam1mφ(n)=(p1−1)...(pm−1)p1a1−1...pmam−1

m3m≥3时,p31p3−1必然为合数

m=2m=2时,只有当p1=2,p2=3,a1=a2=1p1=2,p2=3,a1=a2=1时,也即n=6n=6φ(n)φ(n)是合数

m=1m=1时,当p1>3p1>3时显然φ(n)φ(n)为合数,而当p1=3p1=3时,只有当a1=1a1=1也即n=3n=3φ(n)φ(n)不是合数,当p1=2p1=2时,只有a1=1,2a1=1,2φ(n)φ(n)不是合数

综上,只有n=1,2,3,4,6n=1,2,3,4,6φ(n)φ(n)不是合数,其余情况均为合数

Code

#include<cstdio>
using namespace std;
int main()
{
    int T,k;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&k);
        if(k==1)printf("5\n");
        else printf("%d\n",k+5);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值