欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

「Java学习打卡」 12、求完数、n个a连续相加

程序员文章站 2024-03-15 14:53:48
...

题目一:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程求指定范围内的完数。

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        System.out.print("请输入查找范围:");
        Scanner scan = new Scanner(System.in);
        int c = scan.nextInt();
        int a[] = new int[512];
        for (int i = 2; i <= c; i++) {
            int sum = a[0] = 1;
            int k = 0;
            for (int j = 2; j <= (i / 2); j++) {
                if (i % j == 0) {
                    sum += j;
                    a[++k] = j;
                }
            }
            if (i == sum) {
                System.out.print(i+"="+ a[0]);
                for (int n = 1; n <= k; n++)
                    System.out.print("+"+ a[n]);
                System.out.println();
            }
        }
        return;
    }
}

题目二:求s=a+aa+aaa+aaaa+aa…a(n个a)的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:关键是计算出每一项的值。

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        int s = 0, t;
        System.out.println("请输入 a 和 n:");
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int n = scan.nextInt();
        t = a;
        while (n > 0) {
            s += t;
            a = a * 10;
            t += a;
            n--;
            if (n == 0) {
                System.out.print((t / 10));
            } else {
                System.out.print((t / 10) + "+");
            }
        }
        System.out.println("=" + s);
        return;
    }
}