MCPcopy Index your code
hub / github.com/geekcomputers/Python / goldbach

Function goldbach

primelib/primelib.py:280–327  ·  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

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

Callers

nothing calls this directly

Calls 4

isEvenFunction · 0.85
getPrimeNumbersFunction · 0.85
isPrimeFunction · 0.85
appendMethod · 0.45

Tested by

no test coverage detected