蓝桥笔记之完数

本文介绍了一个简单的Java程序,用于判断用户输入的整数是否为完数。完数是指一个数等于其所有真因子之和的特殊数,如6和28。程序通过遍历小于输入数的所有整数,检查它们是否为真因子,并累加这些因子,最后比较累加和是否等于输入数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6就是“完数”。又如,28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28也是“完数”。编写一个程序,判断用户输入的一个数是否为“完数”。
输入格式:输入只有一行,即一个整数。
输出格式:输出只有一行,如果该数为完数,输出yes,否则输出no。
输入输出样例
【样例输入】
6
【样例输出】
yes

【我的思路】:找到小于这个数的所有真因子,继而累加并判断是否等于这个数

解决方法

import java.util.*;
public class perfect {

	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		if (isPerfectNumber(n))// 调用函数
		{
			System.out.println("yes");
		} else {
			System.out.println("no");
		}
	}

	/**
	 * 判断一个数是否为完数
	 * @param n 用户输入的一个整数
	 * @return  返回真或假
	 */
	public static boolean isPerfectNumber(int n)
	{
		int i, sum = 0;
		for (i = 1; i < n; i++) // 循环遍历小于n的整数
		{
			if (n % i == 0) // 判断如果可以整除,则为真因子
			{
				sum += i; // 累加所有真因子
			}
			if (sum == n)
				return true;// 判断此数符合条件,返回true
		}
		return false; // 不符合条件,返回false
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值