牛客--完全数计算

?个人简介

⭐️个人主页:摸鱼の文酱博客主页?‍♂️
?博客领域:java编程基础,mysql
?写作风格:干货,干货,还是tmd的干货
?精选专栏:【Java】【mysql】 【算法刷题笔记】
?博主的码云gitee,平常博主写的程序代码都在里面。
?支持博主:点赞?、收藏⭐、留言?
?作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

?完全数计算

?1.原题链接

完全数计算

?2.题目要求


完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数12471428,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
输入n,请输出n以内(含n)完全数的个数。
数据范围: 1≤n≤5×10 5


样例输入: 1000

样例输出: 3

?3.基础框架

java版本的基础框架代码如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        
    }
}

?4.解题思路

1.遍历给定范围[ 0 , n ] [0,n][0,n]
2.逐个计算他们除本身以外的约数和,判断与其本身是否相等
3.记录符合条件的数字个数

?5.完整代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int sum = 0;
        //遍历所有范围内的数
        for (int i = 1; i < n; i++) {
            //判断每个数是否符合条件
            if(is_num(i)){
                sum++;
            }
        }
        System.out.println(sum);
    }

    private static boolean is_num(int x) {
    //将数字x除本身以外所有的约数存入数组
        int[] nums = new int[x];
        int count = 0;
        for (int i = 1; i < x; i++) {
            if(x%i==0){
                nums[count++]=i;
            }
        }
        if(is_(nums,x)){
            return true;
        }
        else return false;
    }

    private static boolean is_(int[] nums, int x) {
    //将所有数组内的约数相加,与数字x本身相比是否相等
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            sum+=nums[i];
        }
        if(sum==x)  return true;
        else return false;
    }
}

?6.涉及算法&总结


版权声明:本文为qq_53947552原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。