2014-09-20 3 views
0

이 코드는 2와 3으로 나눌 수있는 n1과 n2 사이의 모든 숫자 (임의로 생성됨)를 인쇄하지만 2로 나눌 수있는 숫자 만 인쇄하려고합니다. 어떻게해야합니까? 이?인쇄 번호는 2로 나눌 수 있지만 3으로 나눌 수 없습니까?

+0

@SotiriosDelimanolis : 음 ... 30 ... – Makoto

+5

'&&'와'! '연산자를 알고 계십니까? – Mephy

+0

3 또는 9가 인쇄되지 않습니다. 2로 나눌 수있는 숫자 만 인쇄합니다! – AlexS

답변

-1

는 논리 및 비교 연산자를 사용

for (int i=n1; i < n2; i++){ 
    if (i % 2 == 0 && i % 3 != 0) { 
     System.out.println(i); 
    } 
} 

&& 귀하의 if 조건 당신은 말 그대로 중간 거기

+0

감사합니다. 이것이 내가 필요한 것입니다. – Bane

+0

왜 downvote? – Foggzie

2

"내가 2로 나누어 3로 나눌 수 없습니다"만일 지금 묻습니다.

!(i % 3 == 0) 

지금, 당신이 경우에만 true를 돌려 부울 연산자를 필요

당신은 당신이 수 그것은 다음과 같이 보일 것입니다 (3)에 의해 나눌 수없는 것을 의무화 두 번째 조건이 필요합니다 두 조건이 모두 참입니다. 즉, 나는 독자에게 운동으로 떠날 것이다.

0

는 (다른 사람이 이미 정답을했다,하지만 난 좀 더 자연스럽게 그것을 설명하려고합니다) 컴퓨터의

, 당신은 그들이 이해할 수있는 방식으로 문장을 작성해야합니다. 단어 "not", "and"및 "or"만 사용하여 "2로 분해하지만 3으로 나누기"와 같은 논리 문장을 좀 더 기본적인 버전으로 변환해야합니다. 귀하의 특정 경우에 말하고자하는 것은 the numbers that are divisible by 2 AND NOT divisible by 3

이미 알고 계시 겠지만, N%X!=0은 (못생긴) N is divisible by X을 작성하는 방법입니다. Java에서는 !을 사용하여 not&&을 사용하여 and을 말합니다.

이렇게하면 (N is divisible by 2) AND NOT (N is divisible by 3)(N % 2 == 0) && !(N % 3 == 0)이라고 쓸 수 있습니다.

if ((i % 2 == 0) && (i % 3 != 0)) { 
    System.out.println(i); 
} 
0

보다 효율적인 솔루션이 아닌 짝수 (초마다) 인쇄하는 것입니다 : 그러나 우리는 또한이 코드의 결과로 이해하는 NOT (X equal Y)하지만 쉽게와 동등한 X not equal Y 연산자 (X!=Y)를 가지고 3의 배수 (매 세 번째 숫자)

for (int i = 2; i < n; i += 6) { 
    System.out.println(i); 
    if (i + 2 < n) 
     System.out.println(i + 2); 
} 

모듈러스 연산은 고가이며,이 두 숫자 대신 매 6 개 루프의 각 반복으로 두 숫자를 출력한다.

+1

나는이 솔루션을 좋아한다. 그러나 n이 이상하다면 어떻게 될까요? E.G. 'n = 3 '이라고합시다. 조건이 충족되지 않아 루프가 실행되지 않습니다. – Makoto

+0

@Makoto가 사실입니다. 피터의 코드가 좋다. :) –

+0

@Makoto 좋은 지적으로, 마지막 숫자를 인쇄하지 못했을 수도 있습니다. –

0

나는 ((i & 1) == 0 경우, 내가짝수이다) 최적의 성능을 위해에 사용 비트 연산자입니다. 짝수의 바이너리는 항상 끝이 0 자리이므로.

public class Example { 

    public static void main(String[] args) { 
     int n1 = 0; 
     int n2 = 100; 
     for (int i = n1; i < n2; i++) { 
      if (((i & 1) == 0)) { 
       if (i % 3 != 0) { 
        System.out.print(i + " "); 
       } 
      } 
     } 
    } 
} 

// Result: 
//  2 4 8 10 14 16 20 22 26 28 32 34 38 40 44 46 50 52 56 58 62 64 68 70 74 76 80 82 86 88 92 94 98 

예 3천5백34퍼센트 3 == 0, 우리가 더 나은 방법이있다 : 모든 숫자 (3 + 5 + 3 + 4) = 15, 15 % 3 == 0 합 ... 코드를 따라 해 봅시다.

n이 큰 경우 (예 : n2 = 99999999999999) 모든 숫자의 합계 사용은 (9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9) % 3 == 0, 비트 연산자는 매우 의미가 있습니다 :)

관련 문제