Advertisement
jukaukor

Gilbreath.jl

Nov 6th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. # Julia Program GilbreathConjecture.jl
  2. # function eratos(n) laskee Eratostheneen seulalla
  3. # annettua lukua pienemmät alkuluvut
  4. # Peräkkäisten alkulukujen erotuksista saadaa uusi jono
  5. # Ja tästä jonosta edelleen peräkkäisten erotukset jne
  6. # Tulokseksi saadaan taulukko
  7. # https://fi.wikipedia.org/wiki/Gilbreathin_konjektuuri
  8. # Juhani Kaukoranta 6.11.2019
  9.  
  10. using Printf
  11.  
  12. function eratos(n) # primes < n
  13. sieve = ones(Bool, n) # all true in sieve
  14. sieve[1] = false # 1 is not a prime
  15. for i = 2:trunc(Int,sqrt(n))
  16. if sieve[i] # if true,
  17. for j in (i*i):i:n # sequence from i^2 to n with step i sieved out
  18. sieve[j] = false # not prime
  19. end
  20. end
  21. end
  22. primes = filter(x -> sieve[x], 1:n) # returns only true, so primes
  23.  
  24.  
  25. return length(primes), primes
  26. end
  27.  
  28. println("Anna kokonaisluku, jota pienemmät alkuluvut lasketaan ")
  29. ntxt = readline()
  30. n = parse(Int,ntxt)
  31. m, primes = eratos(n)
  32. println("Alkulukuja, jotka < ",n," on ",m," kpl")
  33. println("Ekarivillä alkuluvut, seuraavilla erotukset")
  34.  
  35.  
  36. a = Array{Int}(undef,m,m)
  37. for j = 1 : m
  38. # alkulukurivi
  39. a[1,j] = primes[j]
  40. @printf("%3.0f",a[1,j])
  41. end
  42. println()
  43. function differences()
  44. # erotusrivit
  45. pituus = m-1
  46. for i = 1 : m-1
  47. for j = 1 : pituus
  48. a[i+1,j] = abs(a[i,j+1] - a[i,j])
  49. @printf("%3.0f",a[i+1,j])
  50. end
  51. println()
  52. pituus -= 1
  53. end
  54. end
  55.  
  56. differences()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement