게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바에서 암스트롱수 라는 것을 구하려고 하는데 질문 있습니다.
게시물ID : programmer_5387짧은주소 복사하기
작성자 : 오오홍
추천 : 0
조회수 : 1815회
댓글수 : 5개
등록시간 : 2014/09/12 10:15:11
옵션
  • 본인삭제금지
콘솔 창에 10이상 100000이하의 자연수 N을 입력하여 해당 숫자까지 존재하는 암스트롱 수를 구하려고 합니다.
암스트롱 수는 해당 숫자와 각 자리수의 세제곱들의 합이 같은 숫자를 뜻한다고 하네요.
이래저래 코드가 중구난방이 된거 같긴 한데 그래도 숙련자 분들 께선 봐주시리라 믿고 질문을 올립니다 ㅠ

import java.util.*;

public class 암스트롱수 {

public static int multiple(String[] Numarr){
int[] arr = new int[Numarr.length];
int result=0;
for(int i=0;i<Numarr.length;i++){
arr[i]=(int)Math.pow(Double.parseDouble(Numarr[i]), 3);
}
for(int i=0;i<arr.length;i++){
result += arr[i];
}
return result;
}
public static void main(String[] args) {
// TODO 자동 생성된 메소드 스텁
String Num;
String Numtmp;
String[] NumArr;
int count;
Scanner sc = new Scanner(System.in);
System.out.println("양의 정수 N을 입력하세요(10이상 100000이하)");
do{
Num=sc.nextLine();
}while(!(Integer.parseInt(Num)>=10 || Integer.parseInt(Num)<=100000));
for(int i=10;i<Integer.parseInt(Num);i++){
Integer j = new Integer(i);
Numtmp=j.toString();
NumArr = new String[Numtmp.length()];
for(int h=0;h<Numtmp.length();h++){
NumArr[h]=Numtmp.substring(h, h+1);
}
count=multiple(NumArr);
if(i==count){
System.out.println(i);
}
NumArr=null;
Numtmp=null;
j=null;
}
sc.close();
}
}

이렇게 코드를 짰는데요.
문제는 153 부터 407 까지는 출력이 되는데 그 이상의 범위에 있는 수가 출력이 되질 않습니다.
찾아보니 다음 암스트롱수는 4자리 숫자더군요.
정올에서 본 문제라 예시를 찾기도 힘드네요....
뭐가 문제일까요??
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호