Kezdőoldal » Számítástechnika » Programozás » Egyszerű Python-program?

Egyszerű Python-program?

Figyelt kérdés

Ki szeretném íratni a háromjegyű, páratlan négyzetszámokat.


szamok=[]

while i^2 < 1000 and i^2 > 99 and i^2 % 2 ==1:

szamok.append(i^2)

print(szamok)


Ezt a kódot írtam, viszont a kimenet az csak ennyi:

[]


Tudja valaki, hogy mi lehet a hiba?



2021. nov. 23. 11:35
1 2 3
 21/23 anonim ***** válasza:
0%

Íme az újabb javított kód, remélem hogy most már az utolsó.


--------------------------------------------

import math

szamok=[]

limit = 1000


for i in range(1,int(math.sqrt(limit)),2):

num = i*i

if (num < 1000 and num > 99):

szamok.append(num)


print(szamok)

--------------------------------------------

2021. nov. 23. 14:27
Hasznos számodra ez a válasz?
 22/23 anonim ***** válasza:
100%

Ezért kell tanulni kicsit a matematikát is....

Vegyük észre, hogy az egymást követö négyzetszámok különbségének sorozata a páratlan számok sorozata:

négyzetszámok: 0, 1, 4, 9, 16, 25

négyzetszámok különbségei: 1(1-0), 3(4-1), 5(9-4), 7(16-9), 9(25-16)...


Kell néhány segédfüggvény:

paratlan(x) = 2*x + 1

negyzet(x) = x**2


a páratlan négyzetszámok sorozatát úgy állítod elö, hogy a páratlan számok négyzetét veszed:

páratlan_négyzet(x) = negyzet(paratlan(x))


behelyettesítve a paratlan(x) és a negyzet(x)-t a paratlan_negyzet(x)-be:

paratlan_negyzet(x) = negyzet(2*x + 1) = (2*x + 1)**2


ebböl már csak a limitek hiányoznak: 99 < paratlan_negyzet(x) < 1000

Az alsó limit:

99 < paratlan_negyzet(x)

99 < (2*x + 1)*(2*x + 1)

99 < 4*x^2 + 4*x + 2

4 * x^2 + 4 * x - 97 = 0

x ~= 4.45


Mivel egész számokról beszélünk és alsó limitröl van szó, ezért nekünk a legkisebb x, amire értelmezni kell a sorozatunkat, az x=5


a felsö limit: paratlan_negyzet(x) < 1000


4*x^2 + 4*x + 2 - 1000 = 0

ezt megoldva x ~= 15.3

Tehát az utolsó x, ami még belefér a limitbe, az a 15.


mindezt pythonosítva:



>>> szamok = [(2*x + 1)**2 for x in range(5,16)]

>>> szamok

[121, 169, 225, 289, 361, 441, 529, 625, 729, 841, 961]

2021. nov. 23. 16:02
Hasznos számodra ez a válasz?
 23/23 anonim ***** válasza:
0%
#22 Igazad van, érdekes és hasznos meglátás.
2021. nov. 23. 16:35
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!