zoukankan      html  css  js  c++  java
  • 寻找n以内的亲密数对


    MOOC的测验题目如下:

    寻找n以内的亲密数对
    代码格式如下:

    def fac(n):
    ...
    return xxx

    n = int(input()) # 此处输入由系统自动完成不需要自己输入,只要写这样一条语句即可...(3分)

    题目内容:
    对于两个不同的整数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将A和B称为亲密数。自定义函数fac(x)计算x包括1但不包括本身的所有因子和并返回。从键盘输入整数n,调用fac()函数寻找n以内的亲密数并输出。注意每个亲密数对只输出一次,小的在前大的在后,例如220-284。

    输入格式:
    按提示用input()函数输入
    输出格式:
    按样例形式,可使用形如“print("{}-{}".format(参数1, 参数2))”输出语句进行亲密数对的输出
    输入样例:
    500
    输出样例:
    220-284



    网上搜索到用C语言写的

    #include <stdio.h>
    int main()
    {
        int a, i, b, n;
        printf("There are following friendly - numbers pair smaller than 3000:
    ");
     
        for (a = 1; a < 500; a++)
        {    
            for (b = 0, i = 1; i <= a / 2; i++ )
            {
                if(! (a % i)) 
                {
                    b += i;
                }    
            }
            for (n = 0, i = 1; i <= b/2; i++)
            {
                if(! (b % i)) 
                {
                    n += i;
                }
            }
            if(n == a && a < b)
            {
                printf("%4d..%4d
    ", a, b); 
            }
        }   
        return 0;
    }
    
    python的代码(参考别人的):
    
    def fac(n): 
        
        for a in range(2,n+1):
            b = 0
            for i in range(1,a):
                if a%i==0:
                    b +=i
            d = 0
            for i in range(1,b):
                if b%i==0:
                    d +=i
            if d==a and d !=b:
                if a < b:
                    print("{}-{}".format(a,b))
    
    n = int(input("在这里输入(但是题目里要求不需要文字):")) 
    e = fac(n)
    
  • 相关阅读:
    Java基础技术多线程与并发面试【笔记】
    Java GC【笔记】
    Java JVM【笔记】
    Java基础技术JVM面试【笔记】
    Java HashSet和TreeSet【笔记】
    Java TreeMap 和 LinkedHashMap【笔记】
    Java HashMap【笔记】
    Java LinkedList【笔记】
    Java ArrayList【笔记】
    java基础技术集合面试【笔记】
  • 原文地址:https://www.cnblogs.com/tomoya0307/p/12630345.html
Copyright © 2011-2022 走看看