信息学奥赛一本通 1150:求正整数2和n之间的完全数
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1150:求正整数2和n之间的完全数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1150:求正整數2和n之間的完全數
【題目考點】
1.因數、因子
因數(因子)是指整數a除以整數b(b≠0) 的商正好是整數而沒有余數,我們就說b是a的因數。
因數包括這個數本身而不包括因子。
【解題思路】
設一個函數,功能為求一個數的因子之和。方法如下:
設數字為a,遍歷1到小于a的所有數字,將a能整除a的數字(a的因子)加和,返回加和。
主函數中:遍歷2~n的每個整數,判斷這個數與其因子加和是否相等,是則輸出。
【題解代碼】
解法1:使用函數
#include<bits/stdc++.h> using namespace std; //求數字n的因子之和 本題的因子不包括n本身。 int sumOfFactor(int n) {int s = 0;//加和 for(int i = 1; i < n; ++i)//注意:n的因子不包括n if(n % i == 0)//如果i是n的因子 s += i;return s; } int main() {int n;cin >> n;for(int i = 2; i <= n; ++i)if(sumOfFactor(i) == i)cout << i << endl;return 0; }解法2:不用函數
#include<bits/stdc++.h> using namespace std; int main() {int n;cin >> n;for(int i = 2; i <= n; ++i){int s = 0;for(int j = 1; j < i; ++j)if(i % j == 0)s += j;if(s == i)cout << i << endl;}return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1150:求正整数2和n之间的完全数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 聚合函数_如何使用Java流计
- 下一篇: python pexpect模块详解_p