MCPcopy Create free account
hub / github.com/subbarayudu-j/TheAlgorithms-Python / goldbach

Function goldbach

other/primelib.py:267–312  ·  view source on GitHub ↗

Goldbach's assumption input: a even positive integer 'number' > 2 returns a list of two prime numbers whose sum is equal to 'number'

(number)

Source from the content-addressed store, hash-verified

265
266
267def goldbach(number):
268 """
269 Goldbach's assumption
270 input: a even positive integer 'number' > 2
271 returns a list of two prime numbers whose sum is equal to 'number'
272 """
273
274 # precondition
275 assert isinstance(number,int) and (number > 2) and isEven(number), \
276 "'number' must been an int, even and > 2"
277
278 ans = [] # this list will returned
279
280 # creates a list of prime numbers between 2 up to 'number'
281 primeNumbers = getPrimeNumbers(number)
282 lenPN = len(primeNumbers)
283
284 # run variable for while-loops.
285 i = 0
286 j = 1
287
288 # exit variable. for break up the loops
289 loop = True
290
291 while (i < lenPN and loop):
292
293 j = i+1
294
295
296 while (j < lenPN and loop):
297
298 if primeNumbers[i] + primeNumbers[j] == number:
299 loop = False
300 ans.append(primeNumbers[i])
301 ans.append(primeNumbers[j])
302
303 j += 1
304
305 i += 1
306
307 # precondition
308 assert isinstance(ans,list) and (len(ans) == 2) and \
309 (ans[0] + ans[1] == number) and isPrime(ans[0]) and isPrime(ans[1]), \
310 "'ans' must contains two primes. And sum of elements must been eq 'number'"
311
312 return ans
313
314# ----------------------------------------------
315

Callers

nothing calls this directly

Calls 3

isEvenFunction · 0.85
getPrimeNumbersFunction · 0.85
isPrimeFunction · 0.70

Tested by

no test coverage detected