숫자 n이 있다고 가정합니다. n이 강한 소수인지 아닌지 확인해야 합니다. 우리가 알고 있듯이 가장 가까운 소수의 평균보다 큰 소수일 때 강한 소수라고 합니다.
따라서 입력이 num =37과 같으면 가장 가까운 소수는 31과 41이고 평균은 (31+41)/2 =36이므로 출력은 True가 됩니다. 그리고 37> 36입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- num이 소수가 아니거나 2이면
- 거짓을 반환
- 마지막 :=숫자 - 1, 다음 :=숫자 + 1
- next가 소수가 아닌 동안 do
- 다음 :=다음 + 1
- last가 소수가 아닌 동안 do
- 마지막 :=마지막 - 1
- 평균 :=(마지막 + 다음) / 2
- 숫자> 평균이면
- 참 반환
- 거짓을 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def isPrime(num): if num > 1: for i in range(2,num): if num % i == 0: return False return True return False def solve(num): if isPrime(num) == False or num == 2: return False last = num - 1 next = num + 1 while isPrime(next) == False: next += 1 while isPrime(last) == False: last -= 1 avg = (last + next) / 2 if num > avg: return True return False num = 37 print(solve(num))
입력
37
출력
True