NYOJ 570 欧拉函数求和【欧拉函数求和】

我只想说数据弱爆了,这也可以过

欧拉函数求和

时间限制:1000 ms  |  内存限制:65535 KB

难度:3

描述

题目描述很简单,求出

(PS:上面式子的意思是大于0小于n并且能整除n的所有d的欧拉函数值之和)。

输入
每行一个数n(n<2^31),输入以文件结尾结束。
输出
每个结果占一行。
样例输入
1
2
12
样例输出
0
1
8
来源
rihkddd原创
上传者
rihkddd

#include<stdio.h>

int euler(int n)
{
	int ret=n,i;
	for(i=2;i*i<=n;i++)
		if(n%i==0)
		{
			ret=ret-ret/i;
			while(n%i==0)
				n/=i;
		}
	if(n>1)		ret=ret-ret/n;
	return ret;
}

int main()
{
	int n,i;
	while(~scanf("%d",&n))
	{
		int sum=0;
		for(i=1;i*i<=n;i++)
		{
			if(n%i==0)
			{
				if(i!=n)
					sum += euler(i);
				if(i*i != n && i != 1)
					sum += euler(n/i);
			}

		}
		printf("%d\n",sum);
	}
	return 0;
} 
时间: 2024-11-23 07:06:01

NYOJ 570 欧拉函数求和【欧拉函数求和】的相关文章

poj 2480 Longge&amp;#39;s problem 积性函数性质+欧拉函数

题意: 求f(n)=∑gcd(i, N) 1<=i <=N. 分析: f(n)是积性的数论上有证明(f(n)=sigma{1<=i<=N} gcd(i,N) = sigma{d | n}phi(n / d) * d ,后者是积性函数),能够这么解释:当d是n的因子时,设1至n内有a1,a2,..ak满足gcd(n,ai)==d,那么d这个因子贡献是d*k,接下来证明k=phi(n/d):设gcd(x,n)==d,那么gcd(x/d,n/d)==1,所以满足条件的x/d数目为phi(

poj 2480 Longge&#39;s problem 积性函数性质+欧拉函数

题意: 求f(n)=∑gcd(i, N) 1<=i <=N. 分析: f(n)是积性的数论上有证明(f(n)=sigma{1<=i<=N} gcd(i,N) = sigma{d | n}phi(n / d) * d ,后者是积性函数),可以这么解释:当d是n的因子时,设1至n内有a1,a2,..ak满足gcd(n,ai)==d,那么d这个因子贡献是d*k,接下来证明k=phi(n/d):设gcd(x,n)==d,那么gcd(x/d,n/d)==1,所以满足条件的x/d数目为phi(

欧拉函数与欧拉打表解决实际问题

1.欧拉函数的定义: 欧拉函数phi(x)等于不超过x且与x互素的整数的个数. 2.欧拉函数的求法:推导过程见随笔<欧拉函数与容斥原理>. 3.代码实现欧拉函数: 1 int euler_phi(int n) 2 { 3 int m=(int)sqrt(n+0.5);//取一半就行,简化计算 4 int ans=n; 5 for(int i=2;i<=m;i++) 6 if(n%i==0)//找素因子 7 { 8 ans=ans/i*(i-1);//公式的运用 9 while(n%i==

O(n)求素数,求欧拉函数,求莫比乌斯函数,求对mod的逆元,各种求

筛素数 void shai() { no[1]=true;no[0]=true; for(int i=2;i<=r;i++) { if(!no[i]) p[++p[0]]=i; int j=1,t=i*p[1]; while(j<=p[0] && t<=r) { no[t]=true; if(i%p[j]==0) //每一个数字都有最小质因子.这里往后的数都会被筛过的,break break; t=i*p[++j]; } } } O(n)筛欧拉函数 void find()

数论线性筛总结 (素数筛,欧拉函数筛,莫比乌斯函数筛,前n个数的约数个数筛)

线性筛 线性筛在数论中起着至关重要的作用,可以大大降低求解一些问题的时间复杂度,使用线性筛有个前提(除了素数筛)所求函数必须是数论上定义的积性函数,即对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数,若a,b不互质也满足的话则称作完全积性函数,下面说明每个筛子是怎么筛的. 最基础的是素数筛,其它三个筛都是以素数筛为前提 素数筛 void get_prime() { int pnum = 0; for(int i = 2;

欧拉函数和积性函数

欧拉函数和积性函数 欧拉函数: 积性函数: 欧拉定理: ax≡1(modb)的意思: a*x 和 1关于 b 同余 也就是 a * x-1是 b 的倍数. 费马小定理: 原文地址:https://www.cnblogs.com/fisherss/p/9994381.html

vue之better-scroll的封装,包含下拉刷新,上拉加载功能及UI(核心为借鉴,我仅仅是给轮子套上了外胎...)

先发原文作者.地址等信息.我把内容全部搬过来了,也可以去看原文.内容绝对是满满的干货,给原作者点赞!(我添加的内容在转载过来的后面,内容不多) 作者: ustbhuangyi 链接:http://www.imooc.com/article/18232 来源:慕课网 在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了,以滴滴为例,可以是这样竖向滚动的列表,如图所示: 也可以是横向滚动的导航栏,如图所示: 可以打开"微信 -> 钱包->滴滴出行"体验效果. 我们在实

漏极开路,推挽,上拉电阻,弱上拉,三态门,准双向口

我们先来说说集电极开路输出的结构.集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”).对于图 1,当左端的输入为“0”时,前面的三极管截止(即集电极c跟发射极e之间相当于断开),所以5v电源通过1k电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合):当左端的输入为“1”时,前面的三极管导通,而后面的三极管截止(相当于开关断开).       我们将图1简化成图2的样子.图2中的开关受软件控

MUI实现上拉刷新和下拉加载

  前  言 ha ha 为实现下拉刷新功能,大多H5框架都是通过DIV模拟下拉回弹动画,在低端android手机上,DIV动画经常出现卡顿现象(特别是图文列表的情况): mui通过双webview解决这个DIV的拖动流畅度问题:拖动时,拖动的不是div,而是一个完整的webview(子webview),回弹动画使用原生动画. mui的上拉加载和下拉刷新类似,都属于pullRefresh插件. 上拉刷新 主页面内容比较简单,只需要创建子页面即可: mui.init({ subpages:[{ u

微信小程序之下拉加载和上拉刷新

微信小程序下拉刷新上拉加载的两种实现方法 方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新 首先要在json文件里设置window属性             属性   类型                           描述 enablePullDownRefresh Boolean 是否开启下拉刷新,详见页面相关事件处理函数. 设置js里onPullDownRefresh和onReachBottom方法 属性    类型 描述 on