?个人简介 |
⭐️个人主页:摸鱼の文酱博客主页?♂️
?博客领域:java编程基础,mysql
?写作风格:干货,干货,还是tmd的干货
?精选专栏:【Java】【mysql】 【算法刷题笔记】
?博主的码云gitee,平常博主写的程序代码都在里面。
?支持博主:点赞?、收藏⭐、留言?
?作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
?完全数计算
?1.原题链接
?2.题目要求
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28
,它有约数1
、2
、4
、7
、14
、28
,除去它本身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版权协议,转载请附上原文出处链接和本声明。