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

Function goldbach

maths/primelib.py:377–441  ·  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' >>> goldbach(8) [3, 5] >>> goldbach(824) [3, 821] >>> goldbach(0) Traceback (most recent call last): ... AssertionErr

(number)

Source from the content-addressed store, hash-verified

375
376
377def goldbach(number):
378 """
379 Goldbach's assumption
380 input: a even positive integer 'number' > 2
381 returns a list of two prime numbers whose sum is equal to 'number'
382
383 >>> goldbach(8)
384 [3, 5]
385 >>> goldbach(824)
386 [3, 821]
387 >>> goldbach(0)
388 Traceback (most recent call last):
389 ...
390 AssertionError: 'number' must been an int, even and > 2
391 >>> goldbach(-1)
392 Traceback (most recent call last):
393 ...
394 AssertionError: 'number' must been an int, even and > 2
395 >>> goldbach("test")
396 Traceback (most recent call last):
397 ...
398 AssertionError: 'number' must been an int, even and > 2
399 """
400
401 # precondition
402 assert isinstance(number, int) and (number > 2) and is_even(number), (
403 "'number' must been an int, even and > 2"
404 )
405
406 ans = [] # this list will returned
407
408 # creates a list of prime numbers between 2 up to 'number'
409 prime_numbers = get_prime_numbers(number)
410 len_pn = len(prime_numbers)
411
412 # run variable for while-loops.
413 i = 0
414 j = None
415
416 # exit variable. for break up the loops
417 loop = True
418
419 while i < len_pn and loop:
420 j = i + 1
421
422 while j < len_pn and loop:
423 if prime_numbers[i] + prime_numbers[j] == number:
424 loop = False
425 ans.append(prime_numbers[i])
426 ans.append(prime_numbers[j])
427
428 j += 1
429
430 i += 1
431
432 # precondition
433 assert (
434 isinstance(ans, list)

Callers

nothing calls this directly

Calls 4

get_prime_numbersFunction · 0.85
is_evenFunction · 0.70
is_primeFunction · 0.70
appendMethod · 0.45

Tested by

no test coverage detected