1 solutions
-
0
C :
#include<stdio.h> int iswanshu(int n) { int s = 1,i; if(n%2) return 0; for(i = 2;i * i <= n;i++) { if(n%i) continue; else s += (i + n/i); } if(s == n) return 1; else return 0; } int main() { int n,i; while((scanf("%d",&n))!=EOF) { if(n < 6) break; else printf("%d:",n); for(i = 2;i <= n;i++) if(iswanshu(i)) printf(" %d",i); printf("\n"); } return 0; }C++ :
#include<fstream> #include<iostream> #include<vector> using namespace std; int main() { //ifstream cin("1.txt"); //ofstream cout("2.txt"); vector<int> a; // 求出所有完数 // 10000 - 100000之间不存在完数 for(int i = 2; i < 10000; i += 2) { int sum = 1; for(int j = 2; j <= i/2; j++) { if(i%j == 0) sum = sum + j; } if(sum == i) a.push_back(i); } int n; while(cin >> n) { cout << n << ":"; for(int i = 0; i < a.size(); i++) { if(a[i] <= n) cout << " " << a[i]; } cout << endl; } return 0; }
- 1
Information
- ID
- 18466
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- (None)
- # Submissions
- 0
- Accepted
- 0
- Uploaded By