📜个人简介 |
⭐️个人主页:摸鱼の文酱博客主页🙋♂️
🍑博客领域:java编程基础,mysql
🍅写作风格:干货,干货,还是tmd的干货
🌸精选专栏:【Java】【mysql】 【算法刷题笔记】
🎯博主的码云gitee,平常博主写的程序代码都在里面。
🚀支持博主:点赞👍、收藏⭐、留言💬
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
📃HJ56 完全数计算
🎯1.原题链接
🎯2.题目要求
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1
、2
、4
、7
、14
、28
,除去它本身28外,其余5个数相加,1+2+4+7+14=28
。
输入n,请输出n以内(含n)完全数的个数。
样例输入:1000
样例输出:3
🎯3.基础框架
java版本的基础框架代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
}
}
🎯4.解题思路
1.本题可以通过遍历每一个约数,求和,判断完全数。约数计算可以遍历sqrt(n)的范围
🎯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) {
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) {
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum+=nums[i];
}
if(sum==x) return true;
else return false;
}
}