• 0036力扣507题---完美数


    力扣507题---完美数

    对于一个正整数,如果它和除了它自身以外的所有 正因子之和相等,我们称它为「完美数」。

    给定一个整数n,如果是完美数,返回true;否则返回false。

    示例 1:输入:num = 28  输出:true

    解释:28 = 1 + 2 + 4 + 7 + 14
    1, 2, 4, 7, 和 14 是 28 的所有正因子。

    示例 2:输入:num = 7  输出:false

    提示:1 <= num <= 10^8。


    方法代码:

    1. class Solution {
    2.     public boolean checkPerfectNumber(int num) {
    3.         if (num == 1) {
    4.             return false;
    5.         }
    6.         int sum = 1;
    7.         for (int n = 2; n * n <= num; n++) {
    8.             if (num % n == 0) {
    9.                 sum += n;
    10.                 if (n * n < num) {
    11.                     sum += num / n;
    12.                 }
    13.             }
    14.         }
    15.         return sum == num;
    16.     }
    17. }


    实例测试(打印出所有的完美数):

    1. import java.util.Scanner;
    2. public class Main {
    3.     public static void main(String[] args) {
    4.         Scanner in = new Scanner(System.in);
    5.         int n = in.nextInt();
    6.         for (int i = 1; i <= n; i++) {
    7.             if (checkPerfectNumber(i)) {
    8.                 System.out.println(i);
    9.             }
    10.         }
    11.     }
    12.     public static boolean checkPerfectNumber(int num) {
    13.         if (num == 1) {
    14.             return false;
    15.         }
    16.         int sum = 1;
    17.         for (int n = 2; n * n <= num; n++) {
    18.             if (num % n == 0) {
    19.                 sum += n;
    20.                 if (n * n < num) {
    21.                     sum += num / n;
    22.                 }
    23.             }
    24.         }
    25.         return sum == num;
    26.     }
    27. }


    输入:1000
    输出:
    6
    28
    496


    实例测试(打印出所有的完美数及它们的因数):

    1. import java.util.ArrayList;
    2. import java.util.Collections;
    3. import java.util.List;
    4. import java.util.Scanner;
    5. public class Main {
    6.     public static void main(String[] args) {
    7.         Scanner in = new Scanner(System.in);
    8.         int n = in.nextInt();
    9.         for (int i = 4; i <= n; i++) {
    10.             getFactors(i);
    11.         }
    12.     }
    13.     private static void getFactors(int n) {
    14.         int sum = 0;
    15.         List list1 = new ArrayList();
    16.         list1.add(1);
    17.         for (int i = 2; i <= Math.sqrt(n); i++) {
    18.             if (n % i == 0) {
    19.                 list1.add(i);
    20.                 if (n != i * i) {
    21.                     list1.add(n / i);
    22.                 }
    23.             }
    24.         }
    25.         Collections.sort(list1);
    26.         for (int j = 0; j < list1.size(); j++) {
    27.             sum = sum + (int) list1.get(j);
    28.         }
    29.         if (sum == n) {
    30.             System.out.println(n + "的因数有:" + list1);
    31.         }
    32.     }
    33. }


    输入:1000
    输出:
    6的因数有:[1, 2, 3]
    28的因数有:[1, 2, 4, 7, 14]
    496的因数有:[1, 2, 4, 8, 16, 31, 62, 124, 248]

  • 相关阅读:
    Linux中的 loop设备
    【Text2SQL 论文】How to prompt LLMs for Text2SQL
    实战项目【7】MEMS惯性传感器的精度参数和单位换算
    qt定时器的使用
    从零开始学习 Java:简单易懂的入门指南之IO字符流(三十一)
    jvm中的类加载器
    spring接口多实现类,该依赖注入哪一个?
    web前端-html-css-雪碧图&精灵图(切换背景问题,闪烁原因,雪碧图说明,实例)
    Certificates does not conform to algorithm constraints 解决方案
    泰克AFG31000系列任意波函数发生器应用
  • 原文地址:https://blog.csdn.net/weixin_38554453/article/details/125492340