博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4939 欧拉函数[一中数论随堂练]
阅读量:6340 次
发布时间:2019-06-22

本文共 1929 字,大约阅读时间需要 6 分钟。

4939 欧拉函数

 

 时间限制: 1 s
 空间限制: 1000 KB
 题目等级 : 钻石 Diamond
 
 
 
题目描述 
Description

输入一个数n,输出小于n且与n互素的整数个数

输入描述 
Input Description

包含多组数据,n=0时结束

测试数据组数不会很多,不必先打表后输出

输出描述 
Output Description

一组数据一行

样例输入 
Sample Input

364684

346

5432

11

24

0

2333333

233333333

0

233333333333333

2333333333333333333333333333333333333333333333333

 

样例输出 
Sample Output

165120

172

2304

10

8

数据范围及提示 
Data Size & Hint

1<n<9223372036854775807

注意细节的优化,否则第九组数据可能超时

分类标签 Tags 

 
暂无标签

一步步按照老师讲的,转化成代码,结果数据卡内存。

40分代码(MLE)

#include
#include
using namespace std;#define N 100001int n,a[N]={
0};int main(){ while(scanf("%d",&n)==1){ if(!n) break; double s=n; int i,j; for(i=2;;i++){ if(n==1) break; for(j=0;;j++){ if(n%i) break; n/=i; } a[i]=j; } int e=i; for(i=2;i<=e;i++){ if(!a[i]) continue; double t=i; s*=(1.0-1.0/t); } printf("%d\n",(int)s); for(int i=1;i<=e;i++) a[i]=0; } return 0;}

看题解,优化的代码

AC代码1:

#include
#include
using namespace std;int main(){ long long n,ans; while(cin>>n){ if(!n) break; ans=n; if(n%2==0){ while(n%2==0) n/=2; ans/=2; } for(long long i=3;i*i<=n;i+=2){ if(n%i==0){ while(n%i==0) n/=i; ans=ans/i*(i-1); } } if(n>1) ans=ans/n*(n-1); cout<
<

 AC代码2:

#include
int euler_phi(int p){ int phi=p; for(int i=2;i*i<=p;i++){ if(!(p%i)){ phi=phi-phi/i; while(!(p%i)) p/=i; } } if(p>1) phi=phi-phi/p; return phi;}int main(){ int p; while(scanf("%d",&p),p) printf("%d\n",euler_phi(p)); return 0;}

 

转载于:https://www.cnblogs.com/shenben/p/5658387.html

你可能感兴趣的文章
无线和有线路由哪种性能更好
查看>>
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用前端
查看>>
Ubuntu下安装遨游浏览器
查看>>
自定义Linux service脚本
查看>>
微信开发之发红包
查看>>
一键lnmp脚本&&php扩展模块安装(适用于CENTOS6.X系列)
查看>>
二维观察---文字的裁剪
查看>>
矩形覆盖
查看>>
ICMP
查看>>
界面设计模式(第2版)(全彩)
查看>>
linux 的IP配置和网络问题的排查(补充)
查看>>
解决VMware Workstation错误:未能锁定文件
查看>>
CentOS6 手动编译升级 gcc
查看>>
memcached的安装与开启脚本
查看>>
Linux与Window字符集~~伤不起的幽灵空白符
查看>>
zabbix 邮件报警 -- sendmail
查看>>
JavaScript异步编程
查看>>
tcpdump用法小记
查看>>
MySQL基础安全注意细节
查看>>
Oracle随机函数—dbms_random
查看>>