Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 배열의 소수 요소의 합이 소수인지 확인하십시오.

<시간/>

배열 번호가 있다고 가정합니다. 주어진 배열의 모든 소수 요소의 합도 소수인지 확인해야 합니다.

따라서 입력이 nums =[1,2,4,5,3,3]과 같으면 모든 소수의 합이 (2+5+3+3) =13이고 13도 이므로 출력은 True가 됩니다. 프라임.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 최대 :=10000
  • sieve :=MAX 크기 목록 및 true로 채우기
  • create_list_of_primes() 함수 정의
  • sieve[0] :=거짓, sieve[1] :=거짓
  • 2에서 MAX - 1 사이의 i에 대해 다음을 수행합니다.
    • sieve[i]가 참이면
      • 2^i~MAX 범위의 j에 대해 i
          만큼 증가
        • 체[j] :=거짓
  • 기본 방법에서 다음을 수행합니다.
  • generate_list_of_primes()
  • 총계:=0
  • 0 ~ arr - 1 크기 범위의 i에 대해
    • sieve[arr[i]]가 참이면
      • 총계 :=총계 + arr[i]
  • sieve[전체]가 참이면
    • 참 반환
  • 거짓을 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시 코드

MAX = 10000
sieve = [True] * MAX
 
def generate_list_of_primes() :
   sieve[0] = False
   sieve[1] = False
     
   for i in range(2, MAX) :
      if sieve[i] :
         for j in range(2**i, MAX, i) :
           sieve[j] = False
     
def solve(arr) :
   generate_list_of_primes()
   total = 0
   for i in range(len(arr)) :
      if sieve[arr[i]] :
         total += arr[i]

   if sieve[total] :
      return True
   return False

nums = [1,2,4,5,3,3]
print(solve(nums))

입력

[1,2,4,5,3,3]

출력

True