求1到n中與n互質的和(數論)解釋及證明
給出一個N,求1…N中與N互質的數的和
sigma (i=1…n) i*[gcd(i,n)==1]
反證法:gcd(n,i)=1
如果存在K!=1使gcd(n,n-i)=k,那麼(n-i)%k==0且n%k=0
那麼必須保證i%k=0。
i%k == 0 && n%k==0 那麼gcd(n,i)=k,與已知條件矛盾,所以不成立。
得到結論gcd(n,i)=1 則gcd(n,n-i)=1
於是問題變的非常簡單: ANS=N*phi(N)/2i,n-i總是成對出現,並且和是n
那如果n-i=i會不會重複計算呢?
分類討論
1.如果n是奇數,那麼n!=2*i,自然也不存在 n-i=i和重複計算之說
2.如果n是偶數,n=2*i成立,gcd(n,n/2)必然為n的一個因子,這個因子為1當且僅當n==2
於是對於n>2的偶數,gcd(n,n/2)=n/2
對於n==2 ans=2*1/2=1,正好也滿足
所以得到最終公式: ans=N*phi(N)/2
作者:clover_hxy
來源:CSDN
原文:https://blog.csdn.net/clover_hxy/article/details/53152358
版權宣告:本文為博主原創文章,轉載請附上博文連結!
相關推薦
求1到n中與n互質的和(數論)解釋及證明
給出一個N,求1…N中與N互質的數的和 sigma (i=1…n) i*[gcd(i,n)==1] 反證法:gcd(n,i)=1 如果存在K!=1使gcd(n,n-i)=k,那麼(n-i)%k==0且n%k=0 那麼必須保證i%k=0。 i%k == 0 &&am
hdu3501 給出一個N,求1..N中與N互質的數的和
給出一個N,求1..N中與N互質的數的和 ifgcd(n,i)=1 then gcd(n,n-i)=1 (1<=i<=n) 反證法: 如果存在K!=1使gcd(n,n-i)=k,那麼(n-i)%k==0 而n%k=0
小於n的數中與n互質的數的和
題意: 給一個n,求 少於或等於n的數中與n不互質的數的和 我們先求 少於或等於n的數中與n互質的數的和 對於i與n互素 gcd(n,i)=1 必有gcd(n,n-i)=1 設n的尤拉函式值為f[n] 則有f[n]個數與n互素,這些數兩兩相加必等於n
【容斥原理-求區間內與n互質的數】HDOJ Co-prime 4135
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N. Two integers are said to be co-
尤拉函式(提供1到N中與N互質的數)
當個板子放著,具體是看了這篇部落格:尤拉函式求法與應用 尤拉函式用希臘字母φ表示,φ(N)表示N的尤拉函式. 對φ(N)的值,我們可以通俗地理解為小於N且與N互質的數的個數(包含1). //直接求解尤拉函式 int euler(int n){ //返回euler(n
【尤拉函式】(小於或等於n的數中與n互質的數的數目)
【尤拉函式】 在數論,對正整數n,尤拉函式是少於或等於n的數中與n互質的數的數目。此函式以其首名研究者尤拉命名,它又稱為Euler's totient function、φ函式、尤拉商數等
求N(10^14)以內與N互質的數的和(容斥原理,或者尤拉函式)
#include <iostream> #include <cstring> #include <algorithm> #include <cmath>
【轉AekdyCoin】求小於等於N的與N互質的數的和
話說我以前求這樣的問題都是先求與N不互質的數,把N分解質因數,然後用容斥原理,今天看了大牛的部落格,頓時覺得弱爆了。。。 以下內容轉大牛文章: if gcd(n,i)=1 then gcd(n,n-i)=1 (1<=i<=n) 反證法: 如果存在K!=1使gcd
2018 ICPC 瀋陽網路賽 G. Spare Tire 1到n中與m互質的平方和與本身和
計蒜客 全部課程 學習計劃 題庫 比賽 Spare Tire 編輯程式碼 15.27% 1000ms 131072K A sequence of integer \lbrace a_n \rbrace{an} can be expressed as
求1~n中與m互質的數的個數(m>n) 附hdu1695題解(尤拉函式+容斥原理)
int calc(int n,int m) { //求1~n 與m互質的數的個數 int num=getFactors(m); //先將m分解質因數 int sum=0; //先求出不互質的個數,最後用n減去該數 for(int state=1;
求小於n的與n互質的數的和
給出一個N,求1..N中與N互質的數的和 ifgcd(n,i)=1 then gcd(n,n-i)=1 (1<=i<=n) 反證法: 如果存在K!=1使gcd(n,n-i)=k,那麼(n-i)%k==0 而n%k=0
hdu 4135 a到b的範圍中多少數與n互質(容斥)
namespace rim 所有 += ont put contain 質因數 tor Co-prime 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=4135 input
UVA 12493 Stars (尤拉函式--求1~n與n互質的個數)
大致題意:圓上有偶數n個點,每m個點連起來,最後可以把所有點串聯起來就合法。問有多少個m可以完成串聯,串聯後形狀相同的算重複 n <2^31 思路:可以寫個暴力程式,可以發現只要m與n互質,就可以完成串聯,所以用尤拉函式解決 證明: 設cnt為當第一次達到原點時
尤拉函式(求與n互質的數的個數)
求解與n(1-n-1)互質的質因子的個數 解析:(轉) 定義:對於正整數n,φ(n)是小於或等於n的正整數中,與n互質的數的數目。 例如:φ(8)=4,因為1,3,5,7均和8互質。 性質:1.若p是質數,φ(p)= p-1. 2.若n是質數p的k
HDU 5514(Frogs-與n互質的數的求和)
給一個數列ai|m(1≤m≤109), 對<m且為至少一個ai的倍數的數,求和 先把重複的數,倍數關係的數去掉。 顯然m的因子不超過200個,令D為m的因子集合 此時ai均為m的因子, 賽場上可以O(2n) 暴力 但hdu上不行 考慮O(|
返回一個整數陣列中最大子陣列的和(迴圈)。
要求:輸入一個整形陣列,數組裡有正數也有負數。陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和。如果陣列A[0]……A[j-1]首尾相鄰,允許A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。同時返回最大子陣列的位置。求所有子陣列的和的最大值。 思路:在上次實驗的基礎上,
HEVC位元速率控制演算法研究與HM相應程式碼分析(三)——演算法及程式碼分析
在前兩篇文章中,首先介紹了HEVC標準和編碼流程,然後介紹了在HEVC中採用的全新的R-λ模型,本文將基於前面的內容和相應程式碼對位元速率控制演算法進行詳細的分析。 下面基於JCTVC-K0103提案詳細介紹一下HEVC中基於R-λ模型的位元速率控制方法。同時基於HM-10
容斥原理 —— 求1~n有多少個數與k互質(二進位制演算法詳細解釋&模板)
這裡有一道經典的例題,可以看一下:點選開啟連結 這裡的n可能要大於k的,所以不能用尤拉函式去做。 我們首先把k分解質因數,儲存到p陣列中,num表示質因子的數量。 void pr(int k) //求k的質因子 { num = 0; for (int i = 2 ;
求數論求約數和 與 互質和演算法 (分解質因數與尤拉函式)
Description One day, Qz met an easy problem. But after a 5-hout-long contest in CSU, he became very tired and he wanted to call his girl