poj                         Relatives                               
Time Limit: 1000MS   Memory Limit: 65536K
            
                                                                            
                                                                             ->  题目连接 <-
     题目就不用占地方了,以后都用链接来吧;
     这道题就是一个欧拉函数的应用,学了欧拉函数应该没什么问题,但欧拉函数需要注意的是如果题目没有明确要求的话euler(1)的值一般是1;
     欧拉函数用来求解1-n-1中与n互质的数的数目,类似于素数问题,先将所要求的数m分解质因数为p1,p2,p3....,这些质因数两两不等,则euler(m)=m*(1-1/Pi),累加符号不会,将就看看;
     博主也是看了好久,虽然还没下定决心开始研究数论,不过学妹jian问了问这个问题,奈何没学过,就让人家去找学长了................
void fun(int x)
{
int ans=x,n=x;
for(int i=2;i*i<=n;i++)
if(n%i==0)
{
ans-=ans/i;就相当于a*(1-1/p);
while(n%i==0)
n/=i;
}
if(n>1) ans-=ans/n;
printf("%d\n",ans);
}//感觉这个函数效率还是蛮高的;
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
fun(n);
}
return 0;
}

nyoj                                        mdd的烦恼

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


                                                                             ->  题目链接 
<-

          nyoj上的这道题和上面的简直一模一样,只不过题目所给的数据范围很大,用long long 可以表示,但是欧拉函数不会超时吗?当然不会,前面已经提到过这个效率特别高,65535的平方也即是表明程序只能跑到65535,多者超出范围,数据全用long long 表示,我们注意,这个n也是一直在减小的,所以更不用担心超时了,把上面的程序全部改成long
long 便可以了;
void fun(long long x)
{
long long ans=x,n=x;
for(long long i=2; i*i<=n; i++)
if(n%i==0)
{
ans-=ans/i;
while(n%i==0)
n/=i;
}
if(n>1) ans-=ans/n;
printf("%lld\n",ans);
}
int main()
{
long long n;
while(~scanf("%lld",&n)&&n)
{
fun(n);
}
return 0;
}//这里就不再赘述了;




   下面来介绍一下欧拉函数筛法打表,类似于素数打表,十分精简;
const int N=1000000+10;
int euler[N];
void Init( )
{
memset(euler,0,sizeof(euler));
euler[1]=1;//初始化1,请注意根据实际情况做出更改;
for(int i=2; i<N; i++)
if(!euler[i])
{
for(int j=i; j<N; j+=i)//类似于素数筛法打表;
{
if(!euler[j])
euler[j]=j;
euler[j]-=euler[j]/i;//关键;
}
}
}
int main()
{
int n;
Init();
while(~scanf("%d",&n)&&n)
{
printf("%d\n",euler[n]);
}
return 0;
}

  

POJ-20407Relatives/NYOJ-333mdd的烦恼,欧拉函数简单应用,模板A的更多相关文章

  1. poj 2154 Color(polya计数 + 欧拉函数优化)

    http://poj.org/problem?id=2154 大致题意:由n个珠子,n种颜色,组成一个项链.要求不同的项链数目.旋转后一样的属于同一种.结果模p. n个珠子应该有n种旋转置换.每种置换 ...

  2. POJ 2773 Happy 2006【GCD/欧拉函数】

    根据欧几里德算法,gcd(a,b)=gcd(a+b*t,b) 如果a和b互质,则a+b*t和b也互质,即与a互质的数对a取模具有周期性. 所以只要求出小于n且与n互质的元素即可. #include&l ...

  3. POJ 3696 The Luckiest number (欧拉函数,好题)

    该题没思路,参考了网上各种题解.... 注意到凡是那种11111..... 22222..... 33333.....之类的序列都可用这个式子来表示:k*(10^x-1)/9进而简化:8 * (10^ ...

  4. POJ 3090 Visible Lattice Points 【欧拉函数】

    <题目链接> 题目大意: 给出范围为(0, 0)到(n, n)的整点,你站在(0,0)处,问能够看见几个点. 解题分析:很明显,因为 N (1 ≤ N ≤ 1000) ,所以无论 N 为多 ...

  5. nyoj 1007 GCD(数学题 欧拉函数的应用)

    GCD 描述 The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b) ...

  6. 题解报告:poj 2480 Longge's problem(欧拉函数)

    Description Longge is good at mathematics and he likes to think about hard mathematical problems whi ...

  7. 【poj 2407】Relatives(数论--欧拉函数 模版题)

    题意就是求10^9以内的正整数的欧拉函数(Φ(n)表示<=n的与n互质的正整数个数). 解法:用欧拉筛和欧拉函数的一些性质:    1.若p是质数,Φ(p)=p-1:    2.欧拉函数是积性函 ...

  8. POJ_2478 Farey Sequence 【欧拉函数+简单递推】

    一.题目 The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbe ...

  9. poj 1284 Primitive Roots(原根+欧拉函数)

    http://poj.org/problem?id=1284 fr=aladdin">原根 题意:对于奇素数p,假设存在一个x(1<x<p),(x^i)%p两两不同(0&l ...

随机推荐

  1. 找规律 UVALive 6506 Padovan Sequence

    题目传送门 /* 找规律:看看前10项就能看出规律,打个表就行了.被lld坑了一次:( */ #include <cstdio> #include <algorithm> #i ...

  2. Retinex系列之McCann99 Retinex 分类: 图像处理 Matlab 2014-12-03 11:27 585人阅读 评论(0) 收藏

    一.McCann99 Retinex McCann99利用金字塔模型建立对图像的多分辨率描述,自顶向下逐层迭代,提高增强效率.对输入图像的长宽有 严格的限制,要求可表示成 ,且 ,. 上述限制来源于金 ...

  3. C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)

    C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响),如以下代码将无法通过编译. foreach (int x in myArray) { x++; //错误代码,因为改变 ...

  4. 转 php中$_request与$_post、$_get的区别

    php中有$_REQUEST与$_POST.$_GET用于接受表单数据,当时他们有何种区别,什么时候用那种最好. 一.$_REQUEST与$_POST.$_GET的区别和特点 $_REQUEST[]具 ...

  5. 转】MongoDB 自动分片 auto sharding

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/4/ 感谢! MongoDB 自动分片 auto shard ...

  6. DOM简介及节点、属性、查找节点的方法

    DOM(Document Object Modle) 操作文档的编程接口DOM定义了表示和修改文档的方法,不能修改css样式表,在js中使用DOM方法改变元素的css样式,实质上是在元素上添加行间样式 ...

  7. SharedPrefences的用处

    存储数据 SharedPreferences.Editor edit = getSharedPreferences("data", MODE_PRIVATE).edit(); ed ...

  8. linux命令useradd添加用户

    linux命令useradd添加用户详解 1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 2.格式 useradd [-d home] [-s ...

  9. VUE 入坑系列 一 双向绑定

    html代码 <div id="app"> <p>{{message}}</p> <span>message1</span&g ...

  10. 从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)

    随着业务发展,公司需要提高数据安全与性能需求,所以需要对新技术预研(先采坑),做技术积累: 了解相关AlwaysOn 故障转移集群(热备),数据路由(ICX),Moebius(莫比斯数据路由) 决定测 ...