Hirdetés
- Hobby elektronika
- Milyen billentyűzetet vegyek?
- Azonnali informatikai kérdések órája
- Régi CPU újrakiadásával ünnepelné a Socket AM4 tizedik évfordulóját az AMD
- Múltidéző, bézs toronyházakkal villant a Thermaltake
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Azonnali fotós kérdések órája
- TCL LCD és LED TV-k
- LG LCD és LED TV-k
- Milyen TV-t vegyek?
Új hozzászólás Aktív témák
-
EQMontoya
veterán
válasz
Pttypang
#5222
üzenetére
Ejj, ha!
No, akkor okítsunk.

Először is: osztóJa!

Másodszor: szájbaszexuálnád a nevemben, aki arra nevel, hogy magyar változóneveket és függvényneveket használjatok?
Harmadszor: Optimalizáljunk:
-Ha a megadott szám kisebb, mint 1000, akkor elég a megadott számig menni. Tehát a ciklusfeltétel: i<min(n,1000). Illetve ennek is elég a feléig menni, mert különben ugyanazokat a számokat találod meg fordítva. Tehát i<=min(n,1000)/2. Azért kisebbegyenlő, mert kihasználtam gonoszul az egész osztást.
-Gondolkodjunk is: a második ciklus tök felesleges. Minden számhoz csak egy másik olyan tartozik, amivel összeadva az öszeg n lesz. Tehát, amit vizsgálnod kell: prime(i) && prime(n-i). Ezzel kész is vagy.Tehát:
for(i=1;i<=min(n,1000)/2;i++)
{
if(prime(i) && prime(n-i))
{
printf(...);
}
}No, ez már így nem is lenne rossz, most már cak a prímtesztelést kell kicsit okosítani. Maradjunk a primitív módszereknél, de ennél azért kicsit okosabban. Ha egy szám nem prím, akkor előáll két szám szorzataként. Ebből a kettőből az egyik kisebb, vagy egyenlő, mint a gyöke, tehát elég addig nézni.
Osztókat számolni tök felesleges, az első osztónál ugyanis biztosan nem lehet prím.Tehát:
for(i=2;i<=sqrt(n);i++)
{
if(!n%i) //csalok: ez akkor igaz, ha a maradékos osztás maradéka 0 - tehát osztható
{
return false; //van osztója, ami nem egy és nem önmaga
}
}
return true; //ha a gyökéig nem volt osztója, biztos prím.Máris mennyivel szebb, ugye?

Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Hobby elektronika
- iPhone topik
- Milyen billentyűzetet vegyek?
- Kamionok, fuvarozás, logisztika topik
- Azonnali informatikai kérdések órája
- BestBuy topik
- Régi CPU újrakiadásával ünnepelné a Socket AM4 tizedik évfordulóját az AMD
- Autós topik
- Múltidéző, bézs toronyházakkal villant a Thermaltake
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- További aktív témák...
- BESZÁMÍTÁS! Samsung Galaxy Tab S9 128GB Wifi tablet garanciával hibátlan működéssel
- Asus ROG Flow X13 GV301QE 13.4" FHD+ IPS érintő R9 5900HS RTX 3050Ti 16GB 512GB aktív toll gar
- 5-ös pakkban olcsóbb! Dell Latitude 7390, i5-8350U, FHD/IPS, TOUCH, garancia, cégeknek ÁFA-s számla!
- HP EliteBook x360 1040 G11 - 14" WUXGA Érintő - Ultra 7 155H - 16GB - 512GB - Win11
- GAMER PC: i7-7700 /// 16GB DDR4 /// RX 5700 XT /// 256GB SSD
- GYÖNYÖRŰ iPhone 13 Pro Max 128GB Alpine Green -1 ÉV GARANCIA - Kártyafüggetlen, MS4599, 100% Akksi
- GYÖNYÖRŰ iPhone 12 Pro Max 128GB Pacific Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3938
- ÚJ Magic Keyboard billentyűzetek/ USB-C - Lighning/ 27% Áfás/ Ingyenes szállítás!
- HIBÁTLAN iPhone 12 256GB Blue-1 ÉV GARANCIA - Kártyafüggetlen, MS4462
- AZONNALI SZÁLLÍTÁS Eredeti Microsoft Office 2019 Professional Plus
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


