给整数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——欧拉函数裸题的更多相关文章

  1. POJ_2407 Relatives 【欧拉函数裸题】

    一.题目 Given n, a positive integer, how many positive integers less than n are relatively prime to n? ...

  2. poj 2407 欧拉函数裸题

    http://poj.org/problem?id=2407 题意:多组数据,每次输入一个数 ,求这个数的欧拉函数 int euler_phi(int n){//单个欧拉函数 int m=(int)s ...

  3. UVA 10820 欧拉函数模板题

    这道题就是一道简单的欧拉函数模板题,需要注意的是,当(1,1)时只有一个,其他的都有一对.应该对欧拉函数做预处理,显然不会超时. #include<iostream> #include&l ...

  4. POJ 2407 Relatives(欧拉函数入门题)

    Relatives Given n, a positive integer, how many positive integers less than n are relatively prime t ...

  5. hdu 1286 找新朋友 欧拉函数模版题

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

  6. (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 ...

  7. poj2407(欧拉函数模板题)

    题目链接:https://vjudge.net/problem/POJ-2407 题意:给出n,求0..n-1中与n互质的数的个数. 思路:欧拉函数板子题,先根据唯一分解定理求出n的所有质因数p1,p ...

  8. 数论 - 欧拉函数模板题 --- poj 2407 : Relatives

    Relatives Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11372   Accepted: 5544 Descri ...

  9. hdu1286(找新朋友)&&POJ2407Relatives(欧拉函数模版题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1286 没什么好说的,模板题,主要是弄懂欧拉函数的思想. #include <iostream> #i ...

随机推荐

  1. Android:AndroidManifest.xm中xmlns的作用

    有了它,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件.或者语法判断器什么的 这个主要作用是在运行的时候那些控件的属性都是通过它来识别的,如果上 ...

  2. linux和 unix 介绍

    linux和unix都是当今鼎鼎大名的操作系统,可以说改变了这个世界,也是当今科技产业的重要基础.让我们回顾一下他们的发展史吧. 1.unix起源. 上世纪六十年代时,大部份计算机都是采用批处理的方式 ...

  3. IIS应用程序池自动回收问题的解决办法

    windows 2012 的w3wp.exe(IIS Worker Process)进程不及时释放导致占用内存过高,以下解决方法: IIS可以设置定时自动回收,默认回收是1740分钟,也就是29小时. ...

  4. java学习笔记25(Collections类)

    Collections算法类: Collections是一个算法类,提供了一系列静态方法,实现对集合的排序.替换.交换.搜索.拷贝等操作: 用法:Collections.方法名(要操作的集合): 就像 ...

  5. Spring Boot 揭秘与实战(四) 配置文件篇 - 有哪些很棒的特性

    文章目录 1. 使用属性文件2. YAML文件 1.1. 自定义属性 1.2. 参数引用 1.3. 随机数属性 1.4. application-{profile}.properties参数加载 3. ...

  6. hadoop day 3

    1.map:局部处理:reduce:汇总 mapper对数据做切分,一份程序在不同的DataNode上独立运行对数据进行处理,reduce程序将所有DataNode上的统计数据进行汇总 Mapper& ...

  7. 【转载】 AI会议的总结(by南大周志华)

    原文地址: https://blog.csdn.net/LiFeitengup/article/details/8441054 最近在查找期刊会议级别的时候发现这篇博客,应该是2012年之前的内容,现 ...

  8. Putty CentOS SSH 总是自动断开连接

    /********************************************************************** * Putty CentOS SSH 总是自动断开连接 ...

  9. Ubuntu配置Github并且新建仓库push代码,从已有仓库clone代码,并且push

    Github是一款良好的管理代码的工具,使用的时候需要现在Ubuntu上进行配置,下面的内容分为三个部分,第一部分讲述如何在之前从未配置github的电脑配置github,第二部分讲述如何在远程新建一 ...

  10. JS中数据类型的判断

    typeof 使用 : var n = "hello"; console.log(typeof n); console.log(typeof(n));