求 1 到 n 的所有数的约数和
生活随笔
收集整理的這篇文章主要介紹了
求 1 到 n 的所有数的约数和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
求 1 到 n 的所有數的約數和
暴力方法就是枚舉每個數,算出他的約數和即可,這樣有點慢。
另一種思路,枚舉約數,判斷他是誰的約數,并記錄(即他的倍數有多少個),在乘以他自己。
n/i求的是n以內,i的倍數有多少個,在乘以i即可。
可以發現,枚舉到n/2時,往后的所有數的倍數只有他自己,n/i = 1(i>n/2),這里可以用數學方法算出。
代碼:
1 #include<cstdio> 2 3 int main() 4 { 5 int n,ans = 0; 6 scanf("%d",&n); 7 8 for (int i=1; i<=n; ++i) 9 { 10 ans += (n/i)*i; 11 } 12 13 printf("%d",ans); 14 15 return 0; 16 }?
轉載于:https://www.cnblogs.com/mjtcn/p/7306861.html
總結
以上是生活随笔為你收集整理的求 1 到 n 的所有数的约数和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php utf-8
- 下一篇: 洛谷P1402 酒店之王(二分图)