完美數
完美數的定義為:某一個數 n 等於自己以外的正因數的總和,則稱 n 為完美數。
例如:
6 除了 6 本身的正因數有 1, 2, 3
且 1 + 2 + 3 = 6,則 6 就是一個完美數
請寫一個程式來判斷輸入的資料是否為完美數,並將輸入資料中為完美數的部分輸出。
Input
資料格式如下:
第一個數字為待測的資料個數
例如以下範例中第一個數字為 10,則表示後面有 10 筆資料需要讀入
Output
而輸出部分只需印出檢測結果為完美數的數字就好
輸入與輸出方式皆為console讀入/印出
例如 C++ 中的 cin / cout,而非讀檔寫檔
另外 Input 的大小可能會達 9 位數
範例輸入:
10
2 3 28 4 7 9 13 6 27 65536
範例輸出:
28 6
/*----- ----- ----- -----*/ //3-perfect number //Made by 105502555 Teemo Hsu(Synasaivaltos) //Date: 2018/03/15 /*----- ----- ----- -----*/ #include <iostream> #include <cmath> #include <vector> using namespace std; int main(void) { int n; cin >> n; vector<int> ans; while(--n>=0) { int a,i=0,sum=0; cin >> a; while(++i<=(int)sqrt(a)) { int b=a/i; sum=(a==b*i?sum+i+b:sum); } if(a*2==sum) ans.push_back(sum-a); } for(int i=0;i<ans.size();cout<<ans.at(i)<<((i!=ans.size()-1)?" ":""),i++); return 0; } |