[POJ2407]欧拉函数的值
来源:互联网 发布:java写的程序怎么运行 编辑:程序博客网 时间:2024/05/23 02:00
原题
题目描述
给定整数n,求n的欧拉函数的值
输入
多组数据
每行一个整数,表示n( 1 <= n <= 1,000,000,000)
一个0,表示输入结束
输出
每行输入一个整数,表示对应的n的欧拉函数值
样例输入
7
12
0
样例输出
6
4
分析
要解决这道题,我们先来了解什么是欧拉函数和欧拉定理。
欧拉函数
如果n为素数p,则
如果n为素数p的幂次
欧拉函数为积性函数:如果n为任意两个互质的数a、b的积,则
n=
则
欧拉定理:
若a与m互质,则
所以,我们就得出了欧拉计算函数。
int euler(int n){ int m=int(sqrt(n+0.5)),ans=n; for(int i=2;i<=m;i++) if(n%i==0){ ans=ans/i*(i-1); while(n%i==0) n/=i; } if(n>1) ans=ans/n*(n-1); return ans;}
源代码
#include<iostream>#include<cstdio>#include<cmath>using namespace std;int euler(int n){ int m=int(sqrt(n+0.5)),ans=n; for(int i=2;i<=m;i++) if(n%i==0){ ans=ans/i*(i-1); while(n%i==0) n/=i; } if(n>1) ans=ans/n*(n-1); return ans;}int main(){ int x; while(scanf("%d",&x)&&x) printf("%d\n",euler(x));}
0 0
- [POJ2407]欧拉函数的值
- poj2407 欧拉函数
- POJ2407 欧拉函数
- POJ2407:Relatives(欧拉函数)
- poj2407欧拉函数模板
- POJ2407 Relatives(欧拉函数)
- POJ2407---Relatives(求单个数的欧拉函数)
- poj2407 Farey Sequence 欧拉函数
- 欧拉函数 模板题 POJ2407 Relatives
- poj2407(欧拉函数-套模板)
- poj2407 Relatives 欧拉函数基本应用
- poj2407欧拉函数基础题
- POJ2407 Relatives 【欧拉函数模板】
- poj2407欧拉
- 【欧拉函数】 poj2407 Relatives(裸欧拉函数)
- Relatives(poj2407)(求大数的欧拉函数模板题)
- POJ2407-Relatives(欧拉函数裸题)
- 板子题poj2407 欧拉函数 Java实现
- oracle12c存在pdb情况下的dataguard简单搭建
- (27)Java学习笔记——常用对象 / Math 类
- dubbo源码:服务发布详解
- 设计模式初探(二)「Facade模式」
- JS特效之星星打分效果
- [POJ2407]欧拉函数的值
- SVN两种使用方式
- Unity3D在window环境下多屏、全屏运行的解决方案
- android EditText自动获取焦点
- 自动控制理论的发展历程
- Angular封装指令回到顶部以及滚动到特定的页面位置
- centos7上安装DUCKER并配置
- 应届生入职练手习题-蒙特卡洛算法(1.5H)
- 统计MySQL中每条sql的执行时间