0
点赞
收藏
分享

微信扫一扫

欧拉函数

程序员漫画编程 2022-03-11 阅读 162

题目描述:

        给定 n 个正整数 ai,请你求出每个数的欧拉函数。

欧拉函数的定义:

输入格式:

       第一行包含整数 n。

       接下来 n 行,每行包含一个正整数 ai。

输出格式:

        输出共 n 行,每行输出一个正整数 ai 的欧拉函数。

数据范围:

        1≤n≤100
        1≤ai≤2×1000000000

输入样例:

3
3
6
8

输出样例:

2
2
4

解题代码: 

# include <iostream>
using namespace std;
int EF(int x)
{
	int ans = x;
	for (int i = 2; i <= x / i; i++)
	{
		if (x % i == 0)
		{
			ans = ans / i * (i - 1);
		}
		while (!(x % i))
		{
			x = x / i;
		}
	}
	if (x != 1)
	{
		ans = ans / x * (x - 1);
	}
	return ans;
}
int main()
{
	int n;
	cin >> n;
	while (n--)
	{
		int a;
		cin >> a;
		cout << EF(a) << endl;
	}
	return 0;
}

举报

相关推荐

0 条评论