51nod 1040最大公約數和(歐拉函數)

1040?最大公約數之和
題目來源:?rihkddd
基準時間限制:1?秒 空間限制:131072?KB 分值:?80?難度:5級算法題
?收藏
?關注
給出一個n,求1-n這n個數,同n的最大公約數的和。比如:n = 6
1,2,3,4,5,6 同6的最大公約數分別為1,2,3,2,1,6,加在一起 = 15
Input
1個數N(N?<=?10^9)
Output
公約數之和
Input示例
6
Output示例
15
思路:
目的是求∑(i= 1,n) gcd( i , n );
gcd( i , n ) = x,表示x是n的因子。稍作變形gcd( i / x , n / x) = 1,
看到這個式子可以想到歐拉函數,也就是求比n/x小的與其互質的個數。
因為這些書和n/x互質,乘上x后與n的最大公約數只有x。
也就是說我們先求出每個因子,然后計算每個因子有多少貢獻即可。
/** Author:  sweat123* Created Time:  2016/6/27 14:01:46* File Name: main.cpp*/
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<string>
#include<vector>
#include<cstdio>
#include<time.h>
#include<cstring>
#include<iostream>
#include<algorithm>
#define INF 1<<30
#define MOD 1000000007
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define pi acos(-1.0)
using namespace std;
const int MAXN = 1000000;
int n;
ll ef(int n) 
{ ll cnt = n; int i; for(i = 2; i * i <= n; i++){ if(n % i == 0) { cnt -= cnt / i;      //   (x-x/p1) *(1-1/p2)*(1-1/p3)*(1-1/p4).....while(n % i == 0) n /= i; } }if(n > 1) cnt -= cnt / n;return cnt; 
} int main(){while(~scanf("%d",&n)){ll ans = 0;for(int i = 1; i <= (int)sqrt(n); i++){if(n % i == 0){ans += ef(n / i) * i;if(n / i != i){ans += ef(i) * (n / i);   }}} printf("%lld\n",ans);}return 0;
}

?

轉載于:https://www.cnblogs.com/sweat123/p/5620086.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271545.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機安全基礎:加密技術知識筆記

1、加密技術介紹 加密技術是最常用的數據安全保密的手段&#xff0c;加密技術的關鍵在于加密/解密算法和密鑰管理。 數據加密的過程&#xff1a;對明文文件或數據按照某種算法進行處理&#xff0c;變成密文。密文需要根據相應的密鑰才能獲得原來的明文信息&#xff0c;通過這種…

an導入html5,H5-FLASH:AN HTML5-BASED FLASH RUNTIME

摘要&#xff1a;Flash has been widely deployed to many internet applications.Nevertheless,as a closed development platform,there are more and more concerns arisen around its security and performance problems.On the other hand,HTML5 provides an alternative …

JAVA 獲取格林威治時間(GMT)

記錄下獲取GMT時間的方法&#xff1a; //格式可根據需要自定義&#xff0c;如yyyy-MM-dd HH:mm:ss 等等 SimpleDateFormat sdf new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss GMT", Locale.US); Calendar calendar Calendar.getInstance(); sdf.setTimeZone(Tim…

Linux CentOS下安裝Oracle

1 、在安裝oracle之前首先安裝以下組件包&#xff0c;直接輸入下列語句安裝。 yum install binutils* -y yum install compat-lib* -y yum install gcc* -y yum install glibc* -y yum install ksh* -y yum install libgcc* -y yum install libstdc* -y yum install libaio* -y…

計算機安全基礎:認證技術知識筆記

1、認證技術介紹 認證技術主要是用來解決網絡通信過程中通信雙方身份的認可。認證的過程涉及加密和密鑰交換。認證方一般都會有賬戶名、口令、使用摘要算法和基于PKI認證。 2、PKI系統介紹 PKI是一種遵循既定標準的密鑰管理平臺&#xff0c;能夠為所有的網絡應用提供加密和數字…

python 比例之差z假設檢驗_假設檢驗在數據分析中的應用

前言Z檢驗T檢驗獨立樣本t檢驗配對樣本t檢驗單樣本t檢驗前言在這篇文章中&#xff0c;我不會具體去推導檢驗統計量和相應拒絕域的得出&#xff0c;這對于大部分非統計學專業的人士來說是晦澀的&#xff0c;我只想通過一個案例告訴大部分初學者假設檢驗怎么在數據挖掘中使用。%ma…

中南民族大學計算機類有什么具體專業,中南民族大學計算機科學學院計算機科學與技術專業簡介...

計算機科學與技術專業計算機科學與技術專業1985年開始招收本科生。1989年開設計算機應用專業。1998年教育部進行專業調整&#xff0c;成立了計算機科學與技術專業。2012年&#xff0c;計算機科學與技術專業獲得校級品牌專業稱號。計算機科學與技術專業師資雄厚&#xff0c;結構…

Java實現字母的大小寫轉換

String result1 "JAVA";String result2 "springcloud";/*** toLowerCase()* 大寫轉小寫*/System.out.println(result1.toLowerCase());/*** 小寫轉大寫* toUpperCase()*/System.out.println(result2.toUpperCase()); 運行截圖如下:

iOS開發tableview二級聯動的細節實現中注意的細節總結

首先說網絡慢帶來的數據顯示問題 可以通過判斷請求參數是否一致來刷新tableview。 SJBCategaryModel * categaryModel self.categarys[CategarySelectRow]; NSMutableDictionary * params [NSMutableDictionary dictionary]; categaryModel.currentPage 1; params["a&q…

linux ctrlc 退出循環_linux按行讀取 (while read line與forloop)

在linux下一般用while read line與for循環按行讀取文件。這兩種方法有什么區別呢&#xff1f;現有如下test.txt文件&#xff1a;1while read linewhile read line; do echo $linedone < test.txt輸出結果與上圖一致。這里也可以寫為&#xff1a;cat test.txt | while read …

計算機系統基礎:計算機可靠性知識筆記

1、計算機可靠性介紹 計算機的硬件故障通常都是由于元器件失效造成的。元器件的可靠性分為三個階段&#xff1a;開始階段元器件處于不穩定階段失效率比較高、第二階段是正常工作階段&#xff0c;失效率最低、第三階段元器件開始老化&#xff0c;失效率就又開始提高。又稱為“浴…

python時間計算_python datetime庫使用和時間加減計算

datetime庫使用 一、操作當前時間 1.獲取當前時間 >>> importdatetime>>> printdatetime.datetime.now()2019-07-11 14:24:01.954000 時間格式化輸出&#xff1a; >>> print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")2019-…

桌面計算機打開不了怎么辦,電腦桌面上的所有東西都打不開了 怎么處理

1、如果各分區下帶autorun.inf一類的隱藏文件&#xff0c;刪除后最好重新啟動電腦。2、在文件類型中重新設置打開方式(以XP為例)打開 我的電腦&#xff0d;&#xff0d;工具&#xff0d;&#xff0d;文件夾選項&#xff0d;&#xff0d;文件類型&#xff0c;找到“驅動器”或“…

原生js實現京東商城樓梯效果

這個可能有些兼容問題和小bug,新手寫的不完善 歡迎指出 <!DOCTYPE html> <html> <head><title></title><meta charset"utf-8" /><style type"text/css">*{margin: 0px;padding: 0px;list-style: none;}#header{…

IDEA云行項目提示Error: java: OutOfMemoryError

idea運行項目提示如下 解決方法: 調整一下Compiler下面的Compiler Process heap size 參數&#xff0c;默認的是700。如果2048還不能解決問題&#xff0c;試著將它調得更大一些吧&#xff0c; 修改為2048 修改后運行成功

常見的BIOS硬盤故障現象及急救措施

硬盤是電腦的數據倉庫&#xff0c;是最為重要的存儲設備&#xff0c;由BIOS直接管理。如果硬盤出現故障&#xff0c;一般情況下系統通常會顯示一些提示信息&#xff0c;說明問題所在。下面&#xff0c;將一些常見的硬盤故障信息向大家一一介紹。1 C&#xff1a;Drive Failure …

js var是什么類型_JS變量的執行環境和生命周期

溫故而知新&#xff0c;這些JS基礎知識你都知道嗎&#xff1f;今天和大家分享的是 JavaScript 中有關變量的知識&#xff0c;希望這篇文章能讓你對JS中的變量有新的認識.目錄&#xff1a;變量的執行環境&#xff08;執行上下文&#xff09;執行上下文的生命周期創建變量對象變量…

網絡中不能顯示全部計算機,win10家庭版局域網中計算機設備無法完全顯示的解決方法...

許多用戶都喜歡通過局域網來共享一些文件等&#xff0c;打開局域網就可以看到所有共享的計算機&#xff0c;然而有不少win10家庭版用戶卻發現局域網中只能看到幾臺計算機設備&#xff0c;無法完全顯示&#xff0c;該怎么辦呢&#xff0c;現在為大家講解一下win10家庭版局域網中…

java.lang.NoClassDefFoundError:org/apache/commons/io/Charsets (jsoup配合htmlunit 爬取異步加載的網頁遇到的)

最近用jsoup配合htmlunit 爬取異步加載的網頁運行代碼的時候,報錯java.lang.NoClassDefFoundError:org/apache/commons/io/Charsets 報錯截圖如下 解決措施: 1:common-fileupload 1.3.1的版本依賴的commons-io 2.2&#xff0c;而htmlunit的jar依賴的是common-io 2.4 htmlunit…

echarts 3d地球 背面光線太暗_新技術:多波長光源,同時3D打印多種光敏樹脂材料...

如今&#xff0c;光固化3D打印技術已經被廣泛的采用&#xff0c;在齒科、首飾、手辦等領域&#xff0c;然而如上圖一樣的常規光固化3D打印機&#xff0c;一次仍然只能打印一種材料。 △FDM技術類型的3D打印機可以通過增加噴頭數量來實現多色或者多種材料同時打印&#xff0c;圖…