HDU3501——欧拉函数裸题
给整数N(1 ≤ N ≤ 1000000000),求小于N的与N不互素的所有正整数的和。
思路:1.用欧拉函数求出小于N的与N互素的正整数的个数;
2.若 p 与 N 互素,则 N-p 必与 N 互素(若 N%p==0 ,则 ( N , N-p )=p);
3.据此求出 小于N的与N互素的正整数 的和,用 小于N的所有正整数 的和减去之即可。
#include<iostream>
#include<cstdio>
using namespace std;
long long n,s,k;
int main()
{
while()
{
scanf("%lld",&n);
if(!n)break;
s=n;
int cn=n;
for(int i=;i*i<=cn;i++)
if(cn%i==)
{
s-=s/i;
while(cn%i==)cn/=i;
}
if(cn>)s-=s/cn;//为什么不是s--?
k=(n*(n-)/-s*n/)%;//不能是“s/2*n”,因为当n==2时,s==1
printf("%lld\n",k);
}
return ;
}
致命错误:由 2. 而以为 小于N的与N互素的正整数 的个数必是偶数。
不解处:cn最终的可能情况?
对模板的分析:
for(int i=;i*i<=cn;i++)
if(cn%i==)
{
s-=s/i;
while(cn%i==)cn/=i;
}
视N为唯一分解状态(N=Pi^ai*……),则好理解while;
那么为什么是计数用的 s/i 作为被减去的值呢?
举例:30先把自己的10个3减去了,现在想减去自己的5的倍数的个数,又不能减去3*5的倍数;
则30中5的倍数的个数=30/5;
减去的10个3中5的倍数的个数=10/5;
则剩余的20个数中5的倍数的个数=30 / 5 - 10 / 5 =( 30 - 10 ) / 5;
故因为5的倍数在剩余总个数中占的比例不变,可以写s - = s / i;
HDU3501——欧拉函数裸题的更多相关文章
- POJ_2407 Relatives 【欧拉函数裸题】
一.题目 Given n, a positive integer, how many positive integers less than n are relatively prime to n? ...
- poj 2407 欧拉函数裸题
http://poj.org/problem?id=2407 题意:多组数据,每次输入一个数 ,求这个数的欧拉函数 int euler_phi(int n){//单个欧拉函数 int m=(int)s ...
- UVA 10820 欧拉函数模板题
这道题就是一道简单的欧拉函数模板题,需要注意的是,当(1,1)时只有一个,其他的都有一对.应该对欧拉函数做预处理,显然不会超时. #include<iostream> #include&l ...
- POJ 2407 Relatives(欧拉函数入门题)
Relatives Given n, a positive integer, how many positive integers less than n are relatively prime t ...
- hdu 1286 找新朋友 欧拉函数模版题
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Des ...
- (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)
题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- poj2407(欧拉函数模板题)
题目链接:https://vjudge.net/problem/POJ-2407 题意:给出n,求0..n-1中与n互质的数的个数. 思路:欧拉函数板子题,先根据唯一分解定理求出n的所有质因数p1,p ...
- 数论 - 欧拉函数模板题 --- poj 2407 : Relatives
Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11372 Accepted: 5544 Descri ...
- hdu1286(找新朋友)&&POJ2407Relatives(欧拉函数模版题)
http://acm.hdu.edu.cn/showproblem.php?pid=1286 没什么好说的,模板题,主要是弄懂欧拉函数的思想. #include <iostream> #i ...
随机推荐
- Android:AndroidManifest.xm中xmlns的作用
有了它,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件.或者语法判断器什么的 这个主要作用是在运行的时候那些控件的属性都是通过它来识别的,如果上 ...
- linux和 unix 介绍
linux和unix都是当今鼎鼎大名的操作系统,可以说改变了这个世界,也是当今科技产业的重要基础.让我们回顾一下他们的发展史吧. 1.unix起源. 上世纪六十年代时,大部份计算机都是采用批处理的方式 ...
- IIS应用程序池自动回收问题的解决办法
windows 2012 的w3wp.exe(IIS Worker Process)进程不及时释放导致占用内存过高,以下解决方法: IIS可以设置定时自动回收,默认回收是1740分钟,也就是29小时. ...
- java学习笔记25(Collections类)
Collections算法类: Collections是一个算法类,提供了一系列静态方法,实现对集合的排序.替换.交换.搜索.拷贝等操作: 用法:Collections.方法名(要操作的集合): 就像 ...
- Spring Boot 揭秘与实战(四) 配置文件篇 - 有哪些很棒的特性
文章目录 1. 使用属性文件2. YAML文件 1.1. 自定义属性 1.2. 参数引用 1.3. 随机数属性 1.4. application-{profile}.properties参数加载 3. ...
- hadoop day 3
1.map:局部处理:reduce:汇总 mapper对数据做切分,一份程序在不同的DataNode上独立运行对数据进行处理,reduce程序将所有DataNode上的统计数据进行汇总 Mapper& ...
- 【转载】 AI会议的总结(by南大周志华)
原文地址: https://blog.csdn.net/LiFeitengup/article/details/8441054 最近在查找期刊会议级别的时候发现这篇博客,应该是2012年之前的内容,现 ...
- Putty CentOS SSH 总是自动断开连接
/********************************************************************** * Putty CentOS SSH 总是自动断开连接 ...
- Ubuntu配置Github并且新建仓库push代码,从已有仓库clone代码,并且push
Github是一款良好的管理代码的工具,使用的时候需要现在Ubuntu上进行配置,下面的内容分为三个部分,第一部分讲述如何在之前从未配置github的电脑配置github,第二部分讲述如何在远程新建一 ...
- JS中数据类型的判断
typeof 使用 : var n = "hello"; console.log(typeof n); console.log(typeof(n));