하나의 수가 완전수나 완전 제곱수인지 아닌지를 판단하다
package com.thinkgem.jeesite.test;
import com.google.common.collect.Sets;
import java.util.Scanner;
import java.util.Set;
/**
* @Description:
* @Author: leo.xiong
* @CreateDate: 2020/05/06 09:12
* @Email: [email protected]
* @Version:
*/
public class PerfectNumberTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String goBack = "NO";
do {
System.out.println(" ");
Integer num = scanner.nextInt();
Boolean isPerfectNumber = isPerfectNumber(num);
if (isPerfectNumber) {
System.out.println("【" + num + "】 ");
}
Boolean isPerfectSquareNumber = isPerfectSquareNumber(num);
if (isPerfectSquareNumber) {
System.out.println("【" + num + "】 ");
}
System.out.println(" :YES OR NO");
goBack = scanner.next();
} while (!"YES".equalsIgnoreCase(goBack));
}
/**
*
* , 1, :6=1+2+3
*
* @param num
* @return
*/
public static Boolean isPerfectNumber(Integer num) {
if (num <= 2) {
return false;
}
Set allApproximateNumberSet = Sets.newHashSet();
allApproximateNumberSet.add(1);
for (int i = 2; i < num; i++) {
Integer value = getApproximateNumber(i, num);
if (value != null) {
allApproximateNumberSet.add(i);
allApproximateNumberSet.add(value);
}
}
Integer sumValue = 0;
for (Integer value : allApproximateNumberSet) {
sumValue += value;
}
return sumValue.intValue() == num.intValue();
}
/**
*
* 0 1 9=3*3
*
* @param num
* @return
*/
public static Boolean isPerfectSquareNumber(Integer num) {
if (num == 0 || num == 1) {
System.out.println("【" + num + "】 ");
return true;
}
Boolean isPerfectSquareNumberFlag = false;
for (int i = 2; i < num; i++) {
if (!isPerfectSquareNumberFlag) {
isPerfectSquareNumberFlag = (i * i == num);
if (isPerfectSquareNumberFlag) {
return true;
}
}
}
return false;
}
public static Integer getApproximateNumber(int i, Integer num) {
Double value = num.doubleValue() / i;
if (value.intValue() == value) {
return value.intValue();
}
return null;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
react 비계 프로젝트는 https 방법으로텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.