2012/02/21

[zerojudge] d010 盈數、虧數和完全數

題目:https://zerojudge.tw/ShowProblem?problemid=d010
說明:逐步找出目標數的因數,從 2 開始找到目標數的平方根,同樣的數只加一次。在 Python 中,第一次使用到 import

Java 版
import java.util.Scanner;
import java.lang.Math;

public class D010 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int a = in.nextInt();
            int r = 1;
            for(int i = 2; i <= Math.sqrt(a); i++){
                if(a % i == 0){
                    int s = a / i;
                    if(s == i)
                        r = r + i;
                    else
                        r = r + i + s;
                }
            }
            if(r == a)
                System.out.println("完全數");
            else if(r > a)
                System.out.println("盈數");
            else
                System.out.println("虧數");
        }
    }
}
Python 版 (2022.07)
import math

while True:
    try:
        a = int(input())
        r = 1
        for i in range(2, int(math.sqrt(a)) + 1):
            if a % i == 0:
                s = a / i
                if s == i:
                    r = r + i
                else:
                    r = r + i + s

        if r == a:
            print('完全數')
        elif r > a:
            print('盈數')
        else:
            print('虧數')
    except:
        break

沒有留言:

張貼留言