做网站的公司排行班级优化大师网页版登录
1.欧拉函数模板 - 蓝桥云课
问题描述
这是一道模板题。
首先给出欧拉函数的定义:即 Φ(n) 表示的是小于等于 n 的数中和 n 互质的数的个数。
比如说 Φ(6)=2,当 n 是质数的时候,显然有 Φ(n)=n−1。
题目大意:
给定 n 个正整数,请你求出每个数的欧拉函数。
输入格式
输入共两行。
第一行输入一个整数表示 n。
第二行输入 n 个整数。
输出格式
输出共 n 行,每行输出 1 个整数表示对应数字的欧拉函数。
样例输入
3
3 6 8
样例输入
2
2
4
说明
小于等于 3 的数中与 3 互质的有:1, 2。
小于等于 6 的数中与 6 互质的有:1, 5。
小于等于 8 的数中与 8 互质的有:1, 3, 5, 7。
评测数据规模
保证对于所有数据有:
1≤n≤100,输入的 n 个整数范围为 [1,2×109] 。
思路:
模板
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void calc(ll x)
{//分解质因数,根据欧拉函数公式求值ll res = x;for(ll i = 2 ; i <= x / i ; i++){if(x % i == 0){while(x % i == 0){x = x / i;}res = res / i*(i-1);}}if(x > 1) res=res/x*(x-1);cout << res << " ";
}
int main()
{ll n;cin >> n;while(n--){ll x;cin >> x;calc(x);}return 0;
}