Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 인접 자릿수 차이의 합이 소수인지 확인하는 방법

문제 개요

숫자 n이 주어졌을 때, 인접한 두 자릿수 쌍의 절댓값 차이의 합이 소수(prime)인지 아닌지를 판별하는 문제입니다.

예를 들어 입력이 n = 574라면, |5−7| + |7−4| = 2 + 3 = 5이고, 5는 소수이므로 출력은 True가 됩니다.

해결 접근 방법

이 문제는 다음 단계를 따라 해결할 수 있습니다.

  • n을 문자열(num_str)로 변환합니다.
  • 합계를 저장할 변수 total을 0으로 초기화합니다.
  • i를 1부터 문자열 길이 − 1까지 반복하면서, 이전 자릿수와 현재 자릿수의 절댓값 차이를 total에 더합니다.
  • 반복이 끝난 후 total이 소수인지 검사하여, 소수라면 True를 반환하고 그렇지 않으면 False를 반환합니다.

예제 코드

def isPrime(num):
    if num > 1:
        for i in range(2, num):
            if num % i == 0:
                return False
        return True
    return False

def solve(n):
    num_str = str(n)
    total = 0
    for i in range(1, len(num_str)):
        total += abs(int(num_str[i - 1]) - int(num_str[i]))

    if isPrime(total):
        return True
    return False

n = 574
print(solve(n))

코드 설명

isPrime(num): 2부터 num−1까지 나누어 떨어지는 수가 있는지 확인하는 기본적인 소수 판별 함수입니다. num이 1 이하이면 소수가 아니므로 False를 반환합니다.

solve(n): 숫자를 문자열로 변환한 뒤, 인접한 자릿수끼리의 절댓값 차이를 모두 더합니다. 그 합이 isPrime 함수를 통해 소수인지 최종 확인됩니다.

입력 및 실행 결과

입력

574

출력

True

마무리

이 알고리즘의 시간 복잡도는 자릿수의 개수에 비례하는 O(d)이며, 여기에 소수 판별 비용이 추가됩니다. 자릿수가 많지 않은 일반적인 경우에는 매우 효율적으로 동작하며, 문자열 변환과 반복문만으로 간단하게 구현할 수 있다는 장점이 있습니다.