poj2407(欧拉函数-套模板)
2013-05-30 11:06
537 查看
http://poj.org/problem?id=2407
Relatives
Description
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
Sample Output
Source
Waterloo local 2002.07.01
题意:就是求小于n且与n互质的数的个数
明显的欧拉函数直接套的模版。。(ps:自己专用模版)
#include
#include
#include
using namespace std;
int n;
int gcd(int a,int b)
{
return
b?gcd(b,a%b):a;
}
inline int lcm(int a,int b)
{
return
a/gcd(a,b)*b;
}
int eular(int n)
{
int
ret=1,i;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
n/=i;
ret*=i-1;
while(n%i==0)
{
n/=i;
ret*=i;
}
}
}
if(n>1)
{
ret*=n-1;
}
return
ret;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==0)
{
break;
}
printf("%d\n",eular(n));
}
return
0;
}
Relatives
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 9323 | Accepted: 4398 |
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
Source
Waterloo local 2002.07.01
题意:就是求小于n且与n互质的数的个数
明显的欧拉函数直接套的模版。。(ps:自己专用模版)
#include
#include
#include
using namespace std;
int n;
int gcd(int a,int b)
{
return
b?gcd(b,a%b):a;
}
inline int lcm(int a,int b)
{
return
a/gcd(a,b)*b;
}
int eular(int n)
{
int
ret=1,i;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
n/=i;
ret*=i-1;
while(n%i==0)
{
n/=i;
ret*=i;
}
}
}
if(n>1)
{
ret*=n-1;
}
return
ret;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==0)
{
break;
}
printf("%d\n",eular(n));
}
return
0;
}
相关文章推荐
- Relatives(poj2407)(求大数的欧拉函数模板题)
- poj2407欧拉函数模板
- 欧拉函数 模板题 POJ2407 Relatives
- POJ2407 Relatives 【欧拉函数模板】
- ACM模板 欧拉函数
- POJ2407-Relatives-欧拉函数
- hdu 2824 The Euler function (欧拉函数离线模板)
- 欧拉函数筛选模板,转自http://www.cnblogs.com/handsomecui/p/4755455.html
- hdu2824欧拉函数模板
- 欧拉函数(模板)
- 算法模板之欧拉函数
- 【欧拉函数】 poj2407 Relatives(裸欧拉函数)
- poj 2407 Relatives(欧拉函数模板题)
- 【模板】欧拉函数表
- poj 2154 Color(欧拉函数模板+ploya定理)
- POJ2407(欧拉函数)
- 数论 - 欧拉函数模板题 --- poj 2407 : Relatives
- poj2407 Relatives 欧拉函数基本应用
- 51nod1136 欧拉函数模板
- 【欧拉函数模板】