짝수인지 홀수인지 확인
주어진 숫자가 짝수인지 홀수인지 어떻게 판단합니까?오랫동안 이 문제를 해결하고 싶었지만 아직 아무 성과도 얻지 못했어요.
계수 연산자를 사용할 수 있지만 속도가 느려질 수 있습니다.정수일 경우 다음을 수행할 수 있습니다.
if ( (x & 1) == 0 ) { even... } else { odd... }
이는 로우비트가 항상 홀수로 설정되기 때문입니다.
if ((x % 2) == 0) {
// even
} else {
// odd
}
2로 나눌 때 나머지가 0이면 짝수입니다. %
나머지를 얻는 연산자입니다.
나머지 연산자(%)는 숫자로 나눈 후 나머지를 제공합니다.
그렇게n % 2 == 0
n이 짝수이면 true, n이 홀수이면 false가 됩니다.
모든 짝수는 소수인지 여부에 관계없이 2로 나눌 수 있습니다(단, 소수인 경우 짝수여야 합니다).이 경우 를 사용할 수 있습니다.%
(modulo) 연산자: 왼쪽의 숫자를 오른쪽의 숫자로 나누고 나머지를 반환합니다.
boolean isEven(double num) { return ((num % 2) == 0); }
추천드립니다
Joshua Bloch와 Neal Gafter의 Java Puzzler: 트랩, 함정, 코너 케이스 북
번호가 홀수인지 확인하는 방법이 간략하게 설명되어 있습니다.첫 번째 시도는 @AseemYadav가 시도한 것과 비슷합니다.
public static boolean isOdd(int i) {
return i % 2 == 1;
}
그러나 책에 언급된 바와 같이:
나머지 작업이 0이 아닌 결과를 반환할 경우 왼쪽 피연산자와 같은 부호를 가집니다.
그래서 일반적으로 우리가 음의 홀수를 가질 때1
우리는 얻을 것이다-1
의 결과로서i%2
@Camilo 솔루션을 사용할 수도 있고 다음 작업을 수행할 수도 있습니다.
public static boolean isOdd(int i) {
return i % 2 != 0;
}
그러나 일반적으로 가장 빠른 솔루션은 위의 @lucasmo와 같은 AND 연산자를 사용하는 것입니다.
public static boolean isOdd(int i) {
return (i & 1) != 0;
}
@편집 포인트도 있습니다.Math.floorMod(int x, int y);
그것은 마이너스 배당금을 다루지만 또한 반환할 수 있다.-1
제수가 음수인 경우
최하위 비트(맨 오른쪽)를 사용하여 짝수인지 홀수인지를 확인할 수 있습니다.모든 홀수 숫자의 경우 오른쪽 비트는 항상 1이 됩니다.
public static boolean checkOdd(long number){
return ((number & 0x1) == 1);
}
양수 또는 음수에 대해 작동합니다.
int start = -3;
int end = 6;
for (int val = start; val < end; val++)
{
// Condition to Check Even, Not condition (!) will give Odd number
if (val % 2 == 0)
{
System.out.println("Even" + val);
}
else
{
System.out.println("Odd" + val);
}
}
주어진 숫자의 계수가 0일 경우 그 수는 짝수이고, 그렇지 않을 경우 홀수입니다.그 방법은 다음과 같습니다.
public void evenOrOddNumber(int number) {
if (number % 2 == 0) {
System.out.println("Number is Even");
} else {
System.out.println("Number is odd");
}
}
다음 프로그램은 큰 숫자(20자리보다 큰 숫자)를 처리할 수 있습니다.
package com.isEven.java;
import java.util.Scanner;
public class isEvenValuate{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String digit = in.next();
int y = Character.getNumericValue(digit.charAt(digit.length()-1));
boolean isEven = (y&1)==0;
if(isEven)
System.out.println("Even");
else
System.out.println("Odd");
}
}
출력은 다음과 같습니다.
122873215981652362153862153872138721637272
Even
/**
* Check if a number is even or not using modulus operator.
*
* @param number the number to be checked.
* @return {@code true} if the given number is even, otherwise {@code false}.
*/
public static boolean isEven(int number) {
return number % 2 == 0;
}
/**
* Check if a number is even or not using & operator.
*
* @param number the number to be checked.
* @return {@code true} if the given number is even, otherwise {@code false}.
*/
public static boolean isEvenFaster(int number) {
return (number & 1) == 0;
}
계수 연산자를 사용할 수 있지만 속도가 느려질 수 있습니다.보다 효율적인 방법은 가장 낮은 비트를 확인하는 것입니다.그것은 숫자가 짝수인지 홀수인지를 판단하기 때문입니다.코드는 다음과 같습니다.
public static void main(String[] args) {
System.out.println("Enter a number to check if it is even or odd");
System.out.println("Your number is " + (((new Scanner(System.in).nextInt() & 1) == 0) ? "even" : "odd"));
}
다음과 같이 할 수 있습니다.
boolean is_odd(int n) {
return n % 2 == 1 || n % 2 == -1;
}
이는 Java가 모듈로 연산에서 왼쪽: n. 즉, 마이너스 및 플러스 배당에는 모듈로 연산 부호가 있기 때문입니다.
물론 비트 조작이 더 빠르고 최적화되어 있습니다.단, 2, 3개의 짧은 단어로 코드 행을 문서화하는 것만으로 가독성을 확보할 수 있습니다.
if/else 조건을 사용하지 않고 쉽게 수행할 수 있는 또 다른 방법은 다음과 같습니다(양수 및 음수 모두에 해당).
int n = 8;
List<String> messages = Arrays.asList("even", "odd");
System.out.println(messages.get(Math.abs(n%2)));
홀수 번호의 경우 식에서는 '1'이 나머지 값으로 반환되며,
messages.get(1) = '홀수'이므로 '홀수'로 출력합니다.
그렇지 않으면, 식에 결과 '0'이 나올 때 '짝수'가 출력됩니다.
package isevenodd;
import java.util.Scanner;
public class IsEvenOdd {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter number: ");
int y = scan.nextInt();
boolean isEven = (y % 2 == 0) ? true : false;
String x = (isEven) ? "even" : "odd";
System.out.println("Your number is " + x);
}
}
다음으로 완전한 예를 제시하겠습니다.
import java.text.ParseException;
public class TestOddEvenExample {
public static void main(String args[]) throws ParseException {
int x = 24;
oddEvenChecker(x);
int xx = 3;
oddEvenChecker(xx);
}
static void oddEvenChecker(int x) {
if (x % 2 == 0)
System.out.println("You entered an even number." + x);
else
System.out.println("You entered an odd number." + x);
}
}
언급URL : https://stackoverflow.com/questions/7342237/check-whether-number-is-even-or-odd
'sourcecode' 카테고리의 다른 글
MySQL-Server 설치 시 MariaDB 설치를 방지하는 방법 (0) | 2022.12.26 |
---|---|
도커에서 MariaDB를 사용하는 방법 (0) | 2022.12.26 |
작년도의 액티브 오더를 받는 방법 (0) | 2022.12.26 |
동기 프로그래밍과 비동기 프로그래밍(node.js)의 차이점은 무엇입니까? (0) | 2022.12.26 |
jsoup을 사용하여 html을 일반 텍스트로 변환할 때 줄 바꿈을 유지하는 방법은 무엇입니까? (0) | 2022.12.26 |