找新朋友---hdu1286(欧拉函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286
欧拉函数:对正整数n,欧拉函数是求少于n的数中与n互质的数的数目;
素数(质数)指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数.
int Euler(int n)///返回n以内与n互质的数的个数;
{
int ret=1;
for(int 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;
}
筛选法求n以内所有的欧拉函数值( O(n) )
/*线性筛O(n)时间复杂度内筛出N内欧拉函数值*/
int m[N], el[N], p[N], pcnt=0;//m[i]是i的最小素因数,p是素数,pt是素数个数 void make()
{
el[1]=1;
int k;
for(int i=2; i<N; i++)
{
if(!m[i])//i是素数;
{
p[pcnt++]=m[i]=i;
el[i]=i-1;
}
for(int j=0; j<pcnt&&(k=p[j]*i)<N; j++)
{
m[k]=p[j];
if(m[i]==p[j])//为了保证以后的数不被再筛,要break
{
el[k]=el[i]*p[j];//这里的el[k]与el[i]后面的∏(p[i]-1)/p[i]都一样(m[i]==p[j])只差一个p[j],就可以保证∏(p[i]-1)/p[i]前面也一样了;
break;
}
else
el[k]=el[i]*(p[j]-1);//积性函数性质,f(i*k)=f(i)*f(k);
}
}
}
简单的写法:
int eul[N];
void Euler(int n)///打表法求eul[i] (i<n)
{
for(int i=2; i<n; i++)
{
if(eul[i]) continue;
for(int j=i; j<n; j+=i)
{
if(!eul[j]) eul[j] = j;
eul[j] = eul[j] / i * (i-1);
}
}
}
#include<stdio.h>
int Euler(int n)///返回n以内与n互质的数的个数;
{
int ret=;
for(int i=; i*i<=n; i++)
{
if(n%i==)
{
n/=i;
ret*=i-;
while(n%i==)
{
n/=i;
ret*=i;
}
}
}
if(n>)
ret*=n-;
return ret;
} int main()
{
int T, n;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
printf("%d\n", Euler(n));
}
return ;
}
找新朋友---hdu1286(欧拉函数)的更多相关文章
- hdoj 1286 找新朋友【欧拉函数】
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU——1286找新朋友(欧拉函数+质数打表)
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- hdu 1286 找新朋友 (欧拉函数)
Problem Description 新年快到了,"猪头帮协会"准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的 ...
- hdu 1286 找新朋友(欧拉函数)
题意:欧拉函数 思路:欧拉函数 模板,代码略.
- HDU 1286:找新朋友(欧拉函数)
http://acm.hdu.edu.cn/showproblem.php?pid=1286 题意:中文. 思路:求欧拉函数. #include <cstdio> #include < ...
- 找新朋友(hdoj--1286--欧拉函数)
欢迎参加--每周六晚的BestCoder(有米!) 找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- hdu1286 寻找新朋友 (欧拉功能)
原标题:点击打开链接 关于欧拉函数的算法具体解说:点击打开链接 欧拉函数 1.欧拉函数是不全然积性函数. 2.欧拉函数p(x) = x * (p1 - 1) / p1 * (p2 - 1)/p2 * ...
- 【欧拉函数】【HDU1286】 找新朋友
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 欧拉函数之HDU1286找新朋友
找新朋友 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
随机推荐
- js中获取event keycode的兼容办法
window.onkeypress=function(e){ var event = e || window.event, //在ff下event会做为参数传进来,ie下会在window下 keyCo ...
- 重置 ckeditor清空内容
转载自:http://blog.csdn.net/woshirongshaolin/article/details/8239407 <script type="text/javascr ...
- scala Wordcount
package my.bigdata.scala08 import scala.collection.mutableimport scala.collection.mutable.ArrayBuffe ...
- TVS二极管的主要参数与选型
TVS二极管的主要参数--转载 处理瞬时脉冲对器件损害的最好办法是将瞬时电流从敏感器件引开.TVS二极管在线路板上与被保护线路并联,当瞬时电压超过电路正常工作电压后,TVS二极管便发生雪崩,提供给瞬时 ...
- 【NOIP模拟题】Graph(tarjan+dfs)
似乎我搞得太复杂了? 先tarjan缩点然后dfs就行了QAQ. (我不说我被一个sb错调了半个小时....不要以为缩点后dfs就可以肆无忌惮的不加特判判vis了.. bfs的做法:减反图,然后从大到 ...
- 转载:CSS3图标图形生成技术个人攻略
原始地址:http://segmentfault.com/a/1190000000481320 出处:http://www.zhangxinxu.com/wordpress/?p=4113
- 关于CSS 里的_width是什么意思???
下划线_IE6支持下划线,IE7和firefox等均不支持下划线. 你那个代码的意思就是IE6下面宽度 449px;其他浏览器下宽度 460px; 友情提醒:这种HACK写法,得把_width写在正常 ...
- 学习《深入理解C#》—— 数据类型、排序和过滤 (第一章1.1---1.2)
引言 在开始看这本书之前看过一些技术博客,填补自己对于一些知识点的不足.无意中发现了<深入理解C#>这本书,本书主要探讨C# 2.C# 3和C# 4的细节与特性,所以做了一下阅读笔记,欢迎 ...
- iOS开发经验总结(一)
本文转载至 :http://dreamahui.iteye.com/blog/1878650 软件开发方面 1. 在每个页面的入口和出口(一般是viewDidLoad和dealloc)打上日志,可以 ...
- Zabbix-3.0.3实现微信(WeChat)告警
导读 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告 ...
(P是数N的