2012-12-10 2 views
-3

아래의 설명은 내가 프로그램을 작성한 그러나 나는 두 가지 문제가 있습니다가분성 프로그램 - - 두 가지 문제가 해결 필요

  1. 내가 X 1에서 이동하는 카운터를하지 않으을 그때는 것 때문에 실제 사용자 입력보다 적은 모든 숫자에 대해 나눠 주 테스트를 시도하십시오. 2에서 시작하여 12 시까 지 시험을보아야 만 2시 12 분만 시험을 볼 수 있습니다.

  2. 나누기 테스트는 정확하며 모든 숫자에 대해 작동하지만 프로그램 설명에서 질문하지 않습니다. 각 나누기 테스트에 대해 언급 된 알고리즘을 구현해야합니다. (내가 연구하지만 어떻게 해야할지 모르겠 오전 가지고있는) 내가 가지고있는이 간단한 프로그램이 더 의미가 있습니다 - 도움이 될 것입니다 시작하는 단지 장소를

(참고 : % 모듈러스 연산자를 사용할 수 없습니다)

Div by 마지막 짝수는 (0,2,4,6,8) 예 : 128은 129가 아닙니다 Div by 3 숫자의 합계는 3으로 나눌 수 있습니다. 예 : 381 (3 + 8 + 1) = 12 및 12 ÷ 3 = 4) 예 217 (2 + 1 + 7 = 10 및 10 ÷ 3 = 3 1/3) 아니요 나누기 4 마지막 2 자리를 4로 나눌 수 있습니다. 예 : 1312는 (12 ÷ 4 = 3) 7019는 5가 아님 마지막 숫자는 0 또는 5입니다. 175는 809가 아닙니다. Div by 6 (참고 : 사용자 정의 함수로 6을 사용하거나 2 및 3의 기능) 번호는 2와 3으로 나눌 수 있습니다. 예 : 114 (짝수이고 1 + 1 + 4 = 6과 6 ÷ 3 = 2) 예 308 (짝수이지만 3 + 0 + 8 = 11 및 11 ÷ 3 = 3 2/3) 아니요

다시 시작해야 할 곳이 있습니다. 유용한 정보가 있으면 도움이 될 것입니다. 고마워요

+0

왜 미안 해요 (int i = 2; i <12; i ++) – cjds

+0

왜 최대 12 개입니까? 1024를 입력했다고 가정합니다. 제수는 12를 넘어서 * 길 *로갑니다. 또한 머리 수대로, 제수를 확인하기 위해 최대 절반까지 실제 숫자를 사용할 수 있습니다. 수학 속성을 사용하면 전체를 가질 수 있습니다. 당신이 그 가치에 도달 할 때까지 덮여 있습니다. – Makoto

+0

@Makoto 제 생각에 소수를 수동으로 검사하는 것은 제자 수를 13 개까지 확인하는 것입니다. 명확히 밝힙니다. –

답변

0

가장 먼저해야 할 일은 배열에 숫자를 넣는 것입니다.

private static Boolean isDivisibleBy(int x, int divisor) 
{ 
    char[]b=String.valueOf(x).toCharArray(); 
    //Store all your digits as characters 
    int[]no= new int[b.length]; 
    for (int i=0;i<b.length;i++) 
     no[i]=Integer.parseInt(String.valueOf(b[i])); 
    //Now no contains all your integers as an array 
    if(divisor==2) 
      return isDivisibleBy2(no); 
    else if(divisor==3) 
      return isDivisibleBy3(no); 
    else if(divisor==4) 
      return isDivisibleBy4(no); 
    //................... 
    else return false; 
} 

다음 각 시험 2과 같이하는 방법을 쓰기 :

private static Boolean isDivisibleBy2(int[] x){ 
     int lastDigit=x[x.length-1]; 
     if(lastDigit==0 || lastDigit==2 || lastDigit==4 || lastDigit==6 || lastDigit==8) 
      return true; 
     else 
      return false; 
} 

어쨌든 각 시험과 유사한 코드를 작성해야합니다.

+0

입니다.이 방법을 시도해보십시오. 하지만 내가 입력 한 것은 입력을 파싱하여 쉽게 숫자를 조작 할 수있는 방법입니다. 나눗셈 알고리즘을 직접 알아 내십시오. 그러나 문제가있는 경우 – cjds

+0

이 질문을 알고 있습니다. 그러나 이것은 매우 나쁜 해결책입니다. 질문자는 이미 ** ** 두 숫자에 대한 분열을 해결하는 방법을 가지고 있습니다. _only_ 변경이 필요한 것은 for (int i = 1; for i (int i = 2; i <13; i ++))입니다. 모든 나누기 테스트에 메서드가 필요하지 않습니다. 정수를 변환 할 필요가 없습니다 char 또는 int 배열로 변환하십시오. – Annan

+0

사과, 원래 질문을 잘못 읽었습니다.나는이 마음이 놀란다고 느끼지만 모든 시험마다 새로운 방법이 필요해 보인다. – Annan

관련 문제