- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- LG V30 - vezércsel
- Milyen okostelefont vegyek?
- Xiaomi 15 - kicsi telefon nagy energiával
- Hivatalos a OnePlus 13 startdátuma
- Ne felejtsd el a páncélt lemeríteni!
- Telekom mobilszolgáltatások
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Samsung Galaxy A54 - türelemjáték
Ú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!
- E-roller topik
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Kertészet, mezőgazdaság topik
- SSD kibeszélő
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Linux kezdőknek
- Kuponkunyeráló
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- További aktív témák...
- Bomba ár! Dell Latitude E5450 - i7-5GEN I 8GB I 256SSD I 14" FHD Touch I HDMI I Cam I W10 I Gari!
- Felújított számítógépek számlával, garanciával! Ingyen Foxpost!
- Bomba ár! Lenovo ThinkPad T450 - i5-5GEN I 8-16GB I 256SSD I 14" HD+ I Cam I W10 I Garancia!
- Fém, összecsukható és kihúzható fotó állvány eladó
- StarTech Thunderbolt 3 TB3DKDPMAW - Dual-4K Dock
Állásajánlatok
Cég: FOTC
Város: Budapest