1. 程式人生 > >【轉AekdyCoin】求小於等於N的與N互質的數的和

【轉AekdyCoin】求小於等於N的與N互質的數的和

話說我以前求這樣的問題都是先求與N不互質的數,把N分解質因數,然後用容斥原理,今天看了大牛的部落格,頓時覺得弱爆了。。。

以下內容轉大牛文章:

if gcd(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
那麼必須保證i%k=0
k是n的因子,如果i%k=0那麼gcd(n,i)=k,矛盾出現;
於是問題變的非常簡單
ANS=N*phi(N)/2
i,n-i總是成對出現,並且和是n
於是可能就有人問了,如果存在n-i=i那不是重複計算?
答案是不會
因為:
n=2*i->i=n/2
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)=1所以更別說什麼重複計算了
對於n==2
ans=2*1/2=1
正好也滿足
所以得到最終公式:
ans=N*phi(N)/2


相關推薦

AekdyCoin小於等於NN互質的數的

話說我以前求這樣的問題都是先求與N不互質的數,把N分解質因數,然後用容斥原理,今天看了大牛的部落格,頓時覺得弱爆了。。。 以下內容轉大牛文章: if gcd(n,i)=1 then gcd(n,n-i)=1 (1<=i<=n) 反證法: 如果存在K!=1使gcd

LeetCode 233所有小於等於n的整數中,1出現的總次數,(例如111算3次)

聽說找工作的都推薦刷LeetCode,那我也搭配著做一些。 題目連結: https://leetcode.com/problems/number-of-digit-one/ /* 題目: 給一個n, 找出從1到<=n,裡所有整數的每一位上出現的1的總次數,例如n

演算法導論二叉樹的葉子數深度

/**********************************************\ 函式功能:計算葉子節點個數 輸入: 二叉樹的根節點 輸出: 葉子節點個數 \**********************************************/ int countleaf(

C語言N的階乘

求N的階乘  //輸入一個數 n ,求n! #include "stdio.h" int main(){ int n,i; double l = 1; //提高精度 printf("Enter N:"); scanf("%d",&n); for(i = n; i

輸入一個自然數n小於等於n的素數之和

程式碼如下 #include<stdio.h> #include<math.h> int panduan(int i) { int n=2,p=1; if(i==2||i==3) return 1; while(n<=sqrt(i)) {

C語言1-N(遞迴法)

遞迴公式: 條件:f(1) = 1 遞迴條件:f(n-1) + n 為了手機顯示方便(配圖): 程式碼為: //求1-N的和 #include "stdio.h" int f(int n) { //定義函式f 出口為n等於1,否則將n與f(n-1)相

小於等於n的質數個數

埃氏篩法(Eratosthenes篩選法) 演算法基本思想:要得到自然數n以內的全部素數,必須把不大於n1/2的所有素數的倍數剔除,剩下的就是素數。 給出要篩數值的範圍n,找出n以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉;再用2的下一個沒被篩掉的數

小於等於N的所有正整數裡面包含的1的個數

題目: 已知一個正整數N,求比N小(包括N)的所有正整數中包含的1的個數。例如N = 12,則包含5個1,分別為1、10、11、12 解答: 最直觀最簡單的想法是,從1到N對每一個數檢查,得出每個數中包含的一的個數,事件複雜度大概是O(N)1時間複雜度比較高,不是最優演

篩法小於等於整數n的所有質數

篩法求n以下的質數最核心的是確定其倍數未消去的最大數p應該滿足的條件。要消去q的倍數,最小應該從q*q考察起(因為其他跟小的倍數已經由2p,3p。。。(p-1)*p消去了) 那麼消去q的倍數只需從q*q開始 到n結束(滿足不等式q*q <=n). 以下是測試程式碼: #

面試題包含n個節點(從1到nn個節點)的所有二叉搜尋樹

二叉搜尋樹滿足的條件 當前根節點的值大於左子樹節點的值 當前根節點的值小於右子樹節點的值 左右子樹同樣是二叉搜尋樹 根據上述規則可以看出,根節點值不同,形成的二叉搜尋樹就不同,那麼[1:n]範圍內的n個數就有n個不同的選擇。 [1:i−1]這i-1

JS+CSS簡單實現DIV遮罩層顯示隱藏

button left dtd -m javascrip htm width dex absolute <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/

實用教程阿裏雲服務器的配置使用

-a 文件 4.4 創建 site 租用服務器 網頁 html F12 【實用教程】阿裏雲服務器的配置和使用 隨著網絡應用的日常化,網絡資源的使用已經不是專業人士或機構的專利。通過簡單的學習,每個人都可以在無需硬件的情況下擁有一個甚至多個服務器,並配置屬於自己的網頁

+修改容聯雲通訊api調用短信發送調用

appid setresult imp mss 修改 正常 .cn tty err 轉自 https://my.oschina.net/u/1995134/blog/814540 需要榮聯雲通訊 的 相對應SDKjar包。 CCP_REST_SMS_SDK_JAVA_v

最短路兩點間最短路徑的改進的Dijkstra算法及其matlab實現

inf 效率 func 圖論 表示圖 function nes 航空航天 ogr 代碼來源:《圖論算法及其matlab實現》(北京航空航天出版社) P18 書中提出了基於經典Dijkstra算法改進的兩種算法。 其中算法Ⅱ的效率較高。 代碼如下: 1 functio

最短路兩點間最短路的Floyd算法及其matlab實現

以及 pre 實現 style div 是否 log inf 表示 代碼來源:《圖論算法及其matlab實現》(北京航空航天出版社) P22 此代碼返回第一個點和最後一個點之間最短路徑,以及最短路徑的長度。 代碼如下: 1 function [P,u ]

1Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)測試環境搭建 經驗總結

div tar post bug span trace 版本 test 4.0 Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)測試環境搭建 經驗總結 關於 Appium 1.6.3 在Xcode 8, 10.2 的iOS模擬器上的問

2Appium 1.6.3 在Xcode 8 (真機)測試環境搭建 經驗總結

原因 ftl 關於 經驗 結束 views 報錯 catch live Appium 1.6.3 在Xcode 8 (真機)測試環境搭建經驗總結 關於 Appium 1.6.3 在Xcode 8, 1真機上環境搭建問題更多,寫此文章,供大家參考,讓大家少走彎路。

最短路最大可靠路的算法及其matlab實現

war for 文件 輸出 jvm spa zeros 頂點 代碼 內容來源:《圖論算法及其matlab實現》(北京航空航天出版社) P34 【算法用途】 求圖中兩頂點間的最大可靠路。 代碼

單調棧一個數組第一個比他小的數的位置

type 技術分享 bit esp alt log lap while play 【AC】 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int

TFS上分支標簽的用法

項目發布 運行 任務並發 系統 gui 特定 恢復 程序員 div 引用路徑:http://blog.csdn.net/cxzhq2002/article/details/8518250 什麽時候用分支: 例如為某個客戶定制的專用版本,和主幹的特性有很大差別.不具通用