Relatives 和 GCD Again 【欧拉函数】
来源:互联网 发布:宝贝怎么优化标题 编辑:程序博客网 时间:2024/06/07 01:35
Do you have spent some time to think and try to solve those unsolved problem after one ACM contest?
No? Oh, you must do this when you want to become a “Big Cattle”.
Now you will find that this problem is so familiar:
The greatest common divisor GCD (a, b) of two positive integers a and b, sometimes written (a, b), is the largest divisor common to a and b. For example, (1, 2) =1, (12, 18) =6. (a, b) can be easily found by the Euclidean algorithm. Now I am considering a little more difficult problem:
Given an integer N, please count the number of the integers M ( 0 < M < N ) which satisfies ( N , M ) > 1 .
This is a simple version of problem “GCD” which you have done in a contest recently,so I name this problem “GCD Again”.If you cannot solve it still,please take a good think about your method of study.
Good Luck!
Input
Input contains multiple test cases. Each test case contains an integers N ( 1 < N < 100000000). A test case containing 0 terminates the input and this test case is not to be processed.
Output
For each integers N you should output the number of integers M in one line, and with one line of output for each line in input.
Sample Input
2
4
0
Sample Output
0
1
代码
#include<bits/stdc++.h>using namespace std ;typedef long long LL ;const int MAXN = 1e3 +10;const int MAXM = 1e5 ;const int mod = 1e9+7 ;const double pi=acos(-1.0);int eular(int n){ int ans=n; for(int i=2;i*i<=n;i++){ if(n%i==0){ ans=ans/i*(i-1); while(n%i==0) n/=i; } } if(n>1) ans=ans/n*(n-1); // 如果大于1那么一定是个素数 return ans;}int main(){ int n; while(~scanf("%d",&n)&&n){ printf("%d\n",n-1-eular(n)); } return 0;}
Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if there are no integers x > 1, y > 0, z > 0 such that a = xy and b = xz.
Input
There are several test cases. For each test case, standard input contains a line with n <= 1,000,000,000. A line containing 0 follows the last case.
Output
For each test case there should be single line of output answering the question posed above.
Sample Input
7
12
0
Sample Output
6
4
代码
#include<cstdio>using namespace std ;typedef long long LL ;const int MAXN = 1e3 +10;const int MAXM = 1e5 ;const int mod = 1e9+7 ;int eular(int n){ int ans=n; for(int i=2;i*i<=n;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 n; while(scanf("%d",&n)&&n){ printf("%d\n",eular(n)); } return 0;}
- Relatives 和 GCD Again 【欧拉函数】
- Relatives 【欧拉函数】
- Relatives---欧拉函数
- GCD Again(欧拉函数)
- hdu 1787 GCD Again 欧拉函数
- hdu1787 GCD Again(数论:欧拉函数)
- HDU 1787 GCD Again 欧拉函数
- HDU1787 GCD Again【欧拉函数】
- hdu GCD Again(欧拉函数)
- HDOJ GCD Again 1787【欧拉函数】
- HDOJ-1787 GCD Again(欧拉函数)
- HDU 1787 GCD Again (欧拉函数)
- 1874: Relatives欧拉函数
- Relatives 欧拉函数基础
- POJ2407:Relatives(欧拉函数)
- zoj1906,Relatives 欧拉函数
- POJ2407 Relatives(欧拉函数)
- hdu 1787 GCD Again 欧拉函数小水水 数论
- 错误svn: The repository at 'svn://xxxxx' has uuid 'XXXX', but the WC has 'XXXX'“
- hibernate命名查询时总是报类型转换异常:java.lang.ClassCastException
- Struts2文件下载
- ELK日志分析系统搭建
- 刘欢敏工作
- Relatives 和 GCD Again 【欧拉函数】
- ZOJ1056 The Worm Turns
- redis必杀命令:发布订阅
- fetch详解
- Android项目中Activity生命周期高效的管理方式
- tablib 描述文件TLD的创建方法
- 【Java】逻辑思维训练整理的小题目
- 机器学习算法
- Recyclerview 多布局多数据类型的处理