题目没有任何输入。
输出2到60之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 ......(ei为完数) G: g1 g2 g3 ......(gi为盈数) 其中两个数之间要有空格,行尾不加空格。
无
按题目要求进行输出即可。
#include<stdio.h>
#include<vector>
using namespace std;
int Sum(int a){
int sum=0;
for(int i=1;i<a;i++){
if(0==a%i){
sum=sum+i;
}
}
return sum;
}
int main(){
vector<int> Evec;
vector<int> Gvec;
for(int i=2;i<=60;i++){
if(Sum(i)==i){
Evec.push_back(i);
}
else if(Sum(i)>i){
Gvec.push_back(i);
}
}
printf("E:");
for(int i=0;i<Evec.size();i++){
printf(" %d",Evec[i]);
}
printf("\nG:");
for(int i=0;i<Gvec.size();i++){
printf(" %d",Gvec[i]);
}
}
//一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。
//输出2到60之间所有“完数”和“盈数”,并以如下形式输出:
//E: e1 e2 e3 ......(ei为完数)
//G: g1 g2 g3 ......(gi为盈数) 其中两个数之间要有空格,行尾不加空格。 #define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
vector<int> wanshu;
vector<int> yingshu;
for (int i = 2; i <= 60; i++)
{
vector<int> yinshu;
for (int j = 1; j < i; j++)
{
if (i % j == 0)
yinshu.push_back(j);
}
int sum=0;
for (int m = 0; m < yinshu.size(); m++)
{
sum += yinshu[m];
}
if (sum == i)
wanshu.push_back(i);
else if (sum > i)
yingshu.push_back(i);
}
printf("E:");
for (int i = 0; i < wanshu.size(); i++)
{
printf(" %d", wanshu[i]);
}
printf("\nG:");
for (int i = 0; i < yingshu.size(); i++)
{
printf(" %d", yingshu[i]);
}
} #include <bits/stdc++.h>
using namespace std;
int isEnum(int n){
int ans=0;
for(int i=sqrt(n);i>1;i--){
if(n%i==0){
ans=ans+i+(i!=n/i? n/i:0);
}
}
if(ans+1==n) return 1;
else if(ans+1>n) return 2;
else return 3;
}
void print(int a[],int len){
for(int i=0;i<len;i++)
cout<<' '<<a[i];
}
int main()
{
int a[60]={0},b[60]={0},cnta=0,cntb=0;
for(int i=2;i<=60;i++){
switch(isEnum(i)){
case 1:
a[cnta++]=i;
break;
case 2:
b[cntb++]=i;
break;
default:
break;
}
}
cout<<"E:";
print(a,cnta);
cout<<endl;
cout<<"G:";
print(b,cntb);
}
#include <stdio.h>
int Sum(int x){
int sum = 0;
for(int i = 1; i < x; i++){
if(x % i == 0){
sum += i;
}
}
return sum;
}
int main(){
int e[60] = {0}, g[60] = {0};
int j1 = 0, j2 = 0;
for(int i = 2; i <= 60; i++){
if(Sum(i) == i){
e[j1++] = i;
}else if(Sum(i) > i){
g[j2++] = i;
}
}
printf("E: ");
for(int i = 0; i < j1; i++){
printf("%d", e[i]);
if(i != j1 - 1){
printf(" ");
}
}
printf("\n");
printf("G: ");
for(int i = 0; i < j2; i++){
printf("%d", g[i]);
if(i != j2 - 1){
printf(" ");
}
}
printf("\n");
return 0;
}
//单独写一个函数判断完数/盈数,返回1代表完数,返回-1代表盈数
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int isPerfectNumber(int x){
int sum=0;
for(int i=2;i*i<=x;i++){
if(x%i==0){
sum+=i;
if(x/i!=i)
sum+=x/i;
}
}
if(sum+1==x)
return 1;
else if(sum+1>x)
return -1;
else
return 0;
}
int main(){
vector<int> perfect,abundant;
for(int i=2;i<=60;i++){
if(isPerfectNumber(i)==1)
perfect.push_back(i);
else if(isPerfectNumber(i)==-1)
abundant.push_back(i);
}
vector<int>::iterator item1,item2;
printf("E:");
for(item1=perfect.begin();item1<perfect.end();item1++)
printf(" %d",*item1);
printf("\nG:");
for(item2=abundant.begin();item2<abundant.end();item2++)
printf(" %d",*item2);
return 0;
} #include<iostream>
(720)#include<cstdio>
#include<vector>
using namespace std;
vector<int> numberE;
vector<int> numberG;
int Sum(int x){
int sum =0;
for(int i = 1;i < x;i ++){
if(x % i == 0){
sum += i;}
}
return sum;
}//因子之和函数Sum;
int main(){
for(int i = 2;i <= 60;i++){
if(i == Sum(i)){
numberE.push_back(i);
}
else if(i < Sum(i)){
numberG.push_back(i);
}
}//已经都加到向量里了;
printf("E:");
for(int i = 0;i < numberE.size();i ++){
printf(" %d",numberE[i]);
}
printf("\n");
printf("G:");
for(int i = 0;i < numberG.size();i ++){
printf(" %d",numberG[i]);
}
printf("\n");
return 0;
}
先整了一个求因子之和的函数,然后判断
#include<iostream>
(720)#include<set>
#include<algorithm>
using namespace std;
set<int>solve(int n){
set<int>res;
res.insert(1);
for(int i=2;i*i<=n;i++){
if(n%i==0){
res.insert(i);
res.insert(n/i);
}
}
return res;
}
int main(){
vector<int>e;
vector<int>g;
for(int i=2;i<=60;i++){
set<int>res=solve(i);
int ans=0;
for(auto v:res){
ans+=v;
}
if(ans==i){
e.push_back(i);
}else if(ans>i){
g.push_back(i);
}
}
cout<<"E: ";
for(int i=0;i<e.size()-1;i++){
cout<<e[i]<<" ";
}
cout<<e[e.size()-1]<<endl;
cout<<"G: ";
for(int i=0;i<g.size()-1;i++){
cout<<g[i]<<" ";
}
cout<<g[g.size()-1]<<endl;
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int is_relative(int, int);
int main()
{
int i;
int e[60] = {0}, g[60] = {0};
int len1 = 0, len2 = 0;
for(i = 3; i <= 60; i++)
{
int sum = 1, temp, start = 2;//必有因数1
while((temp = is_relative(i, start)) != 0)
{
sum += temp;
start = temp + 1;
}
if(sum == i)
{
e[len1] = i;
len1++;
}
else if(sum > i)
{
g[len2] = i;
len2++;
}
}
printf("E:");
for(i = 0; i < len1; i++)
{
printf(" %d", e[i]);
}
printf("\nG:");
for(i = 0; i < len2; i++)
{
printf(" %d", g[i]);
}
putchar(10);
return 0;
}
int is_relative(int n, int start)
{
for(int i = start; i < n; i++)
{
if(n % i == 0)
return i;
}
return 0;
} #include<stdio.h>//找到除掉本身的因子相加,判断是否等于本身
int main()
{
int w=0,y=0,i,j,E[60],G[60],yinzihe[60];
for(i=2;i<=60;i++)//1-60被除数
{
yinzihe[i]=0;
for(j=1;j<i;j++)//除数不包含i
if(i%j==0)//是因子
yinzihe[i]+=j;//被除数的因子和
if(yinzihe[i]==i)
{
E[w]=i;
w++;//完数下标
}
if(yinzihe[i]>i)
{
G[y]=i;
y++;//盈数下标
}
}
printf("E: ");//输出
for(i=0;i<w;i++) printf("%d ",E[i]);
printf("\nG: ");
for(i=0;i<y;i++) printf("%d ",G[i]);
} #include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> numberE;
vector<int> numberG;
int Sum(int x){
int sum=0;
for(int i=1;i<x;i++){
if(x%i==0)
sum=sum+i;
}
return sum;
}
int main(){
for(int i=2;i<=60;i++){
if(i==Sum(i)){
numberE.push_back(i);
}
else if(i<Sum(i)){
numberG.push_back(i);
}
}
cout<<"E:";
for(int i=0;i<numberE.size();i++)
cout<<" "<<numberE[i];//注意空格在前
cout<<endl;
cout<<"G:";
for(int i=0;i<numberG.size();i++)
cout<<" "<<numberG[i];
cout<<endl;
return 0;
} #include <iostream>
(720)#include <cstdio>
#include <cstring>
using namespace std;
int arrE[59];
int arrG[59];
int SoF(int n) {
int sum = 0;
for(int i = 1; i <= n / 2; i++) {
if(n % i == 0) sum += i;
}
return sum;
}
int main() {
int iE = 0;
int iG = 0;
memset(arrE, 0, sizeof(arrE));
memset(arrG, 0, sizeof(arrG));
for(int n = 2; n <= 60; n++) {
if(SoF(n) == n) {
arrE[iE] = n;
iE++;
}
if(SoF(n) > n) {
arrG[iG] = n;
iG++;
}
}
printf("E:");
for(int i = 0; i < 59; i++) {
if(arrE[i] == 0) break;
printf(" %d", arrE[i]);
}
printf("\nG:");
for(int i = 0; i < 59; i++) {
if(arrG[i] == 0) break;
printf(" %d", arrG[i]);
}
return 0;
} #include <cstdio>
#include <vector>
using namespace std;
vector<int> E,G;
void fun(int n,vector<int> &num){
for(int i=1;i<n;i++){
if(n%i==0){
num.push_back(i);
}
}
}
int add(vector<int> num){
int sum=0;
for(int i=0;i<num.size();i++){
sum+=num[i];
}
return sum;
}
int main(){
for(int i=2;i<=60;i++){
vector<int> num;
int sum=0;
fun(i,num);
sum=add(num);
if(sum==i){
E.push_back(i);
}
else if(sum>i){
G.push_back(i);
}
else{
continue;
}
}
printf("E:");
for(int i=0;i<E.size();i++){
printf(" %d",E[i]);
}
printf("\nG:");
for(int j=0;j<G.size();j++){
printf(" %d",G[j]);
}
return 0;
} #include <stdio.h>
int main()
{
int a[60],b[60],sum,k=0,l=0;
for(int i=2;i<=60;i++)
{
sum=0;
for(int j=1;j<=(i/2);j++)if(i%j==0)sum+=j;
if(sum==i)a[k++]=i;
else if(sum>i)b[l++]=i;
}
printf("E:");
for(int i=0;i<k;i++)printf(" %d",a[i]);
printf("\nG:");
for(int i=0;i<l;i++)printf(" %d",b[i]);
} #include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int func(int x){
int sum = 0;
for (int i = 1; i < x; ++i) {
if (x % i == 0) {
sum += i;
}
}
if (sum == x) {
return 1; //如果是完数返回1
} else if (sum > x) {
return 2; //如果是盈数返回2
}
return 0; //都不是完数返回0
}
int main(){
vector<int> wanInt;
vector<int> yingInt;
for (int i = 3; i < 61; ++i) {
int k = func(i);
if (k == 1) {
wanInt.push_back(i);
} else if (k == 2) {
yingInt.push_back(i);
}
}
printf("E:");
for (int j = 0; j < wanInt.size(); ++j) {
printf(" %d", wanInt[j]);
}
printf("\n");
printf("G:");
for (int l = 0; l < yingInt.size(); ++l) {
printf(" %d", yingInt[l]);
}
printf("\n");
return 0;
} 选择j<8是因为8*8=64>60。
#include
int main(){
int E[60] = {0}, G[60] = {0};
int i, sum, j, div, mod;
for(i=2; i<61; i++){
sum = 0;
for(j=2; j<8; j++){
mod = i % j;
div = i / j;
if(div < j)
break;
if(mod == 0){
if(div == j)
sum += div;
else
sum += (div + j);
}
}
sum += 1;
if(sum == i)
E[++E[0]] = i;
else if(sum > i)
G[++G[0]] = i;
}
printf("E:");
for(j=1; j<=E[0]; j++)
printf(" %d",E[j]);
printf("\n");
printf("G:");
for(j=1; j<=G[0]; j++)
printf(" %d",G[j]);
printf("\n");
}