码迷,mamicode.com
首页 > 系统相关 > 详细

《linux 内核完全剖析》 chapter 8 内核代码

时间:2014-05-09 01:48:26      阅读:418      评论:0      收藏:0      [点我收藏+]

标签:算法   acm   数学   

求n内与n互质的数有多少个。

欧拉函数就是为这个而生的。

如果对欧拉函数不是很了解的话,可以看看这个http://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0

我们有了上一篇埃氏筛法求素数之后,我们求这个就简单了。

具体用法就是这个函数

bubuko.com,布布扣

用最后这个公式。n可以写成bubuko.com,布布扣

我们先来求得2到sqrt(n)的素数然后来将n化成bubuko.com,布布扣的形式

中间如果n能整除p的话就要带入公式了。这样我们就求得最后结果了。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	bool b[10000];
	memset(b,true,sizeof(b));
	for(int i=2;i<10000;i++)
	{
		if(b[i])
		{
			for(int j=i+i;j<10000;j+=i)
			{
				b[j]=false;
			}
		}
	}
	//上面为埃氏筛法筛素数 下面是欧拉函数的应用
	int n;
	while(cin>>n)
	{
		int nn=n;
		int ans=n;
		int ii=2;
		while(n&&ii*ii<(nn))
		{
			if(b[ii]&&n%ii==0)
			{
				ans=ans-ans/ii;
				while(n%ii==0)
				{
					n/=ii;
				}
			}
			ii++;
		}
		cout<<ans<<endl;
	}
	system("pause");
}

好了!

感谢自己坚持。

《linux 内核完全剖析》 chapter 8 内核代码,布布扣,bubuko.com

《linux 内核完全剖析》 chapter 8 内核代码

标签:算法   acm   数学   

原文地址:http://blog.csdn.net/cinmyheart/article/details/25333597

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