[省选前题目整理][POJ 2407]Relatives(欧拉函数)
来源:互联网 发布:vr设备 知乎 编辑:程序博客网 时间:2024/06/06 21:03
题目链接
http://poj.org/problem?id=2407
题目大意
给出
思路
有两种做法:
1、
2、根据欧拉函数公式分解
代码
1、
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXN 1000using namespace std;bool isPrime[MAXN];int fai[MAXN]; //欧拉函数int prime[MAXN],tot=0; //质数void GetEular(){ memset(isPrime,true,sizeof(isPrime)); fai[1]=1; tot=0; for(int i=2;i<MAXN;i++) { if(isPrime[i]) { prime[++tot]=i; fai[i]=i-1; } for(int j=1;j<=tot;j++) { if(i*prime[j]>MAXN) break; isPrime[i*prime[j]]=false; if(i%prime[j]==0) { fai[i*prime[j]]=fai[i]*prime[j]; break; } else fai[i*prime[j]]=fai[i]*(prime[j]-1); } }}int main(){ GetEular(); int n; while(scanf("%d",&n)!=EOF&&n) { printf("%d\n",fai[n]); } return 0;}
2、分解
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXN 1000using namespace std;int fai(int n){ int ans=n; for(int i=2;i<=n;i++) { if(n%i==0) { ans=ans/i*(i-1); while(n%i==0) n/=i; } } return ans;}int main(){ int n; while(scanf("%d",&n)!=EOF&&n) { printf("%d\n",fai(n)); } return 0;}
0 0
- [省选前题目整理][POJ 2407]Relatives(欧拉函数)
- POJ 2407 Relatives && UVA 10299 Relatives(欧拉函数)
- POJ 2407 Relatives 欧拉函数
- POJ 2407 Relatives 欧拉函数
- poj 2407 Relatives(欧拉函数)
- POJ 2407 Relatives 欧拉函数题解
- poj 2407Relatives(数论:欧拉函数)
- [POJ 2407]Relatives(欧拉函数)
- POJ 2407 Relatives (欧拉函数)
- POJ 2407 : Relatives - 欧拉函数
- POJ 2407 Relatives(欧拉函数)
- POJ 2407 Relatives(欧拉函数)
- POJ 2407 Relatives(欧拉函数)
- POJ-2407-Relatives-欧拉函数
- POJ 2407 Relatives (欧拉函数)
- POJ 2407-Relatives-欧拉函数
- POJ 2407 Relatives(欧拉函数)
- 【POJ】2407 - Relatives(欧拉函数)
- 蓝桥杯 概率计算
- 【贪心】POJ 1065
- elasticseach日常维护之shard管理
- 使用_CrtSetDbgFlag检测内存泄露
- 线程池python实现
- [省选前题目整理][POJ 2407]Relatives(欧拉函数)
- PMP 学习之一:PMP五大过程组十大知识领域47个子过程
- 算法导论随笔(第2章)
- MySQL和Oracle Procedure和Function的区别
- 疯狂小象
- Yii 创建自己的扩展
- uva 10763 Foreign Exchange我认为我这种做法最符合题意!
- python使用@property
- ITOO中之controller的错误