码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉函数

时间:2015-08-02 11:53:26      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:算法   欧拉函数   数论算法   

description:欧拉函数用于求解与n互质且小于或等于n的数的个数  。例如 数8, 与8互质且小于等于8的数有1, 3, 5,7四个

算法分析: euler(n) = n *(1- 1/p1) *( 1- 1/p2) *( 1- 1/p3)*........其中p1,p2,p3..........为素数并且整除n

code:

#include <iostream>
using namespace std;

int isprime(int n)
{
	if (n == 1)
		return 0;
	for (int i = 2; i*i<=n; i++)
	{
		if (n % i == 0)
			return 0;
	}
	return 1;
}

int Euler(int n)
{
	int res = n;
	for (int i = 2; i*i<=n; i++)
	{
		if (n%i == 0 && isprime(i))                    //为素数并且整除n 
			res = res/i * (i-1);
	}
	return res;
}

int main()
{
	int n;
	while (cin >> n)
	{
		cout << Euler(n)<< endl;
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

欧拉函数

标签:算法   欧拉函数   数论算法   

原文地址:http://blog.csdn.net/xiaotan1314/article/details/47205059

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!