PHP týden První novoroční výprodej
80 % bodů zdarma díky akci Black Friday!
Pouze tento týden sleva až 80 % na e-learning týkající se PHP
Avatar
Denisa Váňová:25.12.2019 23:53

Ahoj, jdu si pro radu jako úplná začátečnice :)

Nevím si úplně rady s tímto úkolem:
Je zadáno číslo n. Vypište všechny prvočíselné dvojice menší než n.
Prvočíselná dvojice je dvojice čísel p a p + 2, kde p i p + 2 je prvočíslo.

Zkusil jsem:

n = int(input("Zadejte číslo:"))

sito = [False, False] + [True]*(n-1)
seznam = list(range(n))

for i in range(2,n):
    if sito[i] == True:
        j = 2
        while i*j < n:
            sito[i*j] = False
            j = j+1
for i in range(n):
    for k in range(i+1, n):
        if (sito[i] == True) and (sito[k] == True):
            if (sito[i] + 2 == sito[k]):
                print(str(seznam[i])+ " " + str(seznam [k]))

Zkoušela jsem toto, ale tato část

if (sito[i] + 2 == sito[k]):

nefunguje.
Budu ráda za jakoukoliv pomoc, co vše dělám blbě, děkuji.

 
Odpovědět
25.12.2019 23:53
Avatar
Odpovídá na Denisa Váňová
Matúš Olejník:28.12.2019 16:49

Nerobím v Pythone, ale keďže vidím, že akosi tu nikto nepíše tak sa pokúsim pomôcť. Hádam, že sa to bude dať aj krajšie spraviť :) Tiež som zachoval použitie toho Eratosthenovho sita a upravil ten kód podľa ukážky vo wikipedii
Snáď funguje :D

#https://cs.wikipedia.org/wiki/Eratosthenovo_s%C3%ADto
def eratosthenovo_sito(n):
  n += 1
  sito = [True] * n

  for i in range(2, n):
    if sito[i]:
      for j in range(i*2, n, i):
        sito[j]=False

  primes=[]
  for i in range(2, n):
    if sito[i]:
      primes.append(i)
  return primes

primes = eratosthenovo_sito(200)
primes_len = len(primes)

for i in range(primes_len):
    if i + 1 < primes_len:
        if primes[i] + 2 == primes[i + 1]:
            print(str(primes[i]) + ", " + str(primes[i + 1]))
        else:
            if i + 2 < primes_len:
                if primes[i] + 2 == primes[i + 2]:
                    print(str(primes[i]) + ", " + str(primes[i + 2]))
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
28.12.2019 16:49
/* I am not sure why this works but it fixes the problem */
Naši partneři možná hledají právě tebe!
Avatar
Denisa Váňová:1. ledna 16:25

Moc děkuji za pomoc! :)

 
Nahoru Odpovědět
1. ledna 16:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.