博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-2480 Longge's problem 欧拉函数
阅读量:6296 次
发布时间:2019-06-22

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

详见代码:

#include 
#include
#include
#include
using namespace std;// 给定一个数N,求1-N的所有数与这个数的gcd之和// 观察gcd函数,我们可以得知那些与N互质的数的gcd一定为1,也就是欧拉函数 // 那么那些不互质的数有gcd(x, N) = d // 也就是gcd(x/d, N/d) = 1,所以我们继续求N/d的欧拉函数就可以了 int eular(int x) { // 直接对某一个数进行素因子分解求解 int ret = 1; for (int i = 2; i <= (int)sqrt(double(x)); ++i) { if (x % i == 0) { ret *= i-1; x /= i; while (x % i == 0) { ret *= i; x /= i; } } } if (x != 1) { ret *= x-1; } return ret;}int main() { int N; long long ret; while(scanf("%d", &N) == 1) { ret = 1LL * eular(N) + N; // 统计出所有互质的数以及这个数本身 for (int i = 2; i <= (int)sqrt(double(N)); ++i) { // 枚举出所有的因子 if (N % i == 0) { // 枚举所有的因子 if (i * i == N) { ret += 1LL * eular(i) * i; } else { ret += 1LL * eular(i) * (N/i); ret += 1LL * eular(N/i) * i; } } } printf("%lld\n", ret); } return 0;}

 

转载地址:http://wglta.baihongyu.com/

你可能感兴趣的文章
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>
Firefox 是 Pwn2own 2014 上攻陷次数最多的浏览器
查看>>
阿里感悟(十八)- 应届生Review
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
jquery中hover()的用法。简单粗暴
查看>>
线程管理(六)等待线程的终结
查看>>
spring boot集成mongodb最简单版
查看>>
DELL EqualLogic PS存储数据恢复全过程整理
查看>>
《Node.js入门经典》一2.3 安装模块
查看>>
《Java 开发从入门到精通》—— 2.5 技术解惑
查看>>
Linux 性能诊断 perf使用指南
查看>>
实操分享:看看小白我如何第一次搭建阿里云windows服务器(Tomcat+Mysql)
查看>>
Sphinx 配置文件说明
查看>>
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>
机智云开源框架初始化顺序
查看>>
Spark修炼之道(进阶篇)——Spark入门到精通:第五节 Spark编程模型(二)
查看>>
一线架构师实践指南:云时代下双活零切换的七大关键点
查看>>