Merhaba geçen açtığım konuya gelen cevaptan dolayı müteşekkirim desem yeridir. Zira başka sorabileceğim başka yer yok tahribat dışında. Uzatmamayayım. Kodlar aşağıda ve sorum altındadır. #include<cs50. h> #include<stdio. h> #include<stdbool. h> // Modified program to generate prime numbers int main { int p, i, primes , PrimeIndex = 2; bool IsPrime; primes = 2; primes = 3; for (p = 5; p <= 50; p = p+2) { IsPrime = true; for ( i = 1; IsPrime && p / primes >= primes ; ++i) { if (p % primes 0) } if } for ( i = 1; i < PrimeIndex; i++) return 0; } Output burada, düzgün çalışıyor kodlar 3 5 7 11 13 17 19 23 29 31 37 41 43 47 Şimdi soruma gelirsek: anladığım kadarıyla çift sayıları hiç gz nüne almadan, asal sayının daha nceden üretilmiş olan asal sayılarla blümünden kalana bakarak 50 ye kadar olan asalları yazdırıyor. ama ikinci for loopta anlayamadığım bir yer bulunuyor:p = 5 için içteki for i saymaya başlıyor ve i = 1 yani primes = 3, 5 / 3 >= 3 bunu sağlamadığı için içteki for loop ddevam ediyor ve prime = 5 yapıp PrimeIndex'i bir arttırıyor. devamında: 7 / 3, 7 /5, 9 / 3, 9 / 5, 9 / 711 / 3, 11/ 5, 11 / 7, 11/ 915 / 3, 15/ 5, 15 / 7, 15 / 9, 15 / 11... ancak anlamadığım kısım tamda bu noktada. Mesela 15 / 3 > = 5 burada 5 >= 3 olduğu için içteki loop'un çalışmaması gerekmiyor mu? Anlayamadım mantığı. Umarım sorumu anlatabilmişimdir. Yine çok saçma bir şey düşünüyorum galiba ama yardım bekliyorum yinede :d balbazar tarafından 24/Ara/16 16:51 tarihinde düzenlenmiştir

hocam for içi doğru olduğu sürece devam etmez mi dogru işte niye devam etmesin for ( i = 1; IsPrime && p / primes >= primes ; ++i) hocam burada p değeri blü primes değeri, primes değerinden büyük ve eşit olana kadar devam etmesi gerekmiyor mu? Yani p / primes sonucu, primes değerinden zaten büyük olduğu için durması gerekmiyor mu? Yani 15/3 = 5 büyük mesela 3'ten. Demek istediğim for' un devam etmesi için sonucun 3 den yani primes 'den düşük olması gerekmiyor mu?

balbazar bunu yazdı sercoo bunu yazdı hocam for içi doğru olduğu sürece devam etmez mi dogru işte niye devam etmesin for ( i = 1; IsPrime && p / primes >= primes ; ++i) hocam burada p değeri blü primes değeri, primes değerinden büyük ve eşit olana kadar devam etmesi gerekmiyor mu? Yani p / primes sonucu, primes değerinden zaten büyük olduğu için durması gerekmiyor mu? Yani 15/3 = 5 büyük mesela 3'ten. Demek istediğim for' un devam etmesi için sonucun 3 den yani primes 'den düşük olması gerekmiyor mu? hayır işte yanlış anlamışsın. ordaki koşul sağlanana kadar anlamına gelmiyor, o koşul sağlandığı sürece devam et demek. He tamamdır hocam. Çok yordum galiba ama sağol sonunca tak etti bu da thanks :D Edit: Ara sıra ble zorlanıyorum ama mantığı sonunda bi şekilde anlıyorum sizin sayenizde hocam. İnat ettim ğrenicem bir şekilde C' yi tamamen :D balbazar tarafından 24/Ara/16 16:54 tarihinde düzenlenmiştir

işte p 15 iken i de 1 de 3 ü gsteriyor, inner loop koşulu sağlıyor.(Neden sağlamıyor dediğini anlayamadım. isPrime true, diğer koşul 15/3>=3 te doğru) içerdeki if 15 mod 3 = 0 koşulu da sağlanıyor. isPrime false çeriliyor. Dolayısıyla ikinci if e girmiyor yani 15 yeni bir prime olarak diziye eklenmiyor. edit: kod blogu şeklinde byle şeyleri eklerseniz iyi olur çükümsonik kodu bile okumak zaman alıyor byle. whopper tarafından 24/Ara/16 16:42 tarihinde düzenlenmiştir

Bir zamanlar asal sayılarla kafayı sıyırıyodum az kalsın ama hala bir formülü olduğuna inanıyorum :)

hocam for içi doğru olduğu sürece devam etmez mi dogru işte niye devam etmesin i might be a pineapple but you're a fineapple baby

balbazar bunu yazdı sercoo bunu yazdı hocam for içi doğru olduğu sürece devam etmez mi dogru işte niye devam etmesin for ( i = 1; IsPrime && p / primes >= primes ; ++i) hocam burada p değeri blü primes değeri, primes değerinden büyük ve eşit olana kadar devam etmesi gerekmiyor mu? Yani p / primes sonucu, primes değerinden zaten büyük olduğu için durması gerekmiyor mu? Yani 15/3 = 5 büyük mesela 3'ten. Demek istediğim for' un devam etmesi için sonucun 3 den yani primes 'den düşük olması gerekmiyor mu? hayır işte yanlış anlamışsın. ordaki koşul sağlanana kadar anlamına gelmiyor, o koşul sağlandığı sürece devam et demek. edit: konulara tekrar baktıktan sonra https://www.codingame.com/ sitesine gz at burda kodda yaptıklarının etkisini anlarsın. Biraz yetkinlik kazandıktan sonra codeforces.com a bak orda A seviyesi sorulara sonrada B seviyesinde sorulara bak. Bir tür egzersiz galiba hocam tamamdır çok sağol tekrardan

sercoo bunu yazdı hocam for içi doğru olduğu sürece devam etmez mi dogru işte niye devam etmesin for ( i = 1; IsPrime && p / primes >= primes ; ++i) hocam burada p değeri blü primes değeri, primes değerinden büyük ve eşit olana kadar devam etmesi gerekmiyor mu? Yani p / primes sonucu, primes değerinden zaten büyük olduğu için durması gerekmiyor mu? Yani 15/3 = 5 büyük mesela 3'ten. Demek istediğim for' un devam etmesi için sonucun 3 den yani primes 'den düşük olması gerekmiyor mu? hayır işte yanlış anlamışsın. ordaki koşul sağlanana kadar anlamına gelmiyor, o koşul sağlandığı sürece devam et demek. edit: konulara tekrar baktıktan sonra https://www.codingame.com/ sitesine gz at burda kodda yaptıklarının etkisini anlarsın. Biraz yetkinlik kazandıktan sonra codeforces.com a bak orda A seviyesi sorulara sonrada B seviyesinde sorulara bak. whopper tarafından 24/Ara/16 16:53 tarihinde düzenlenmiştir

işte p 15 iken i de 1 de 3 ü gsteriyor, inner loop koşulu sağlıyor.(Neden sağlamıyor dediğini anlayamadım. isPrime true, diğer koşul 15/3>=3 te doğru) içerdeki if 15 mod 3 = 0 koşulu da sağlanıyor. isPrime false çeriliyor. Dolayısıyla ikinci if e girmiyor yani 15 yeni bir prime olarak diziye eklenmiyor. edit: kod blogu şeklinde byle şeyleri eklerseniz iyi olur çükümsonik kodu bile okumak zaman alıyor byle. ben galiba for loop mantığını tam anlayamamışım yani condition doğru olduğu sürece mi dndür loop u diyor orada?Peki mesela 5/3 primes den büyük değil yani 3 den büüyük değil o zaman ne oluyor? Atlıyor mu kod bloğu şeklinde ekledim: #include #include #include // Modified program to generate prime numbers int main { int p, i, primes , PrimeIndex = 2; bool IsPrime; primes = 2; primes = 3; for (p = 5; p <= 50; p = p+2) { IsPrime = true; for ( i = 1; IsPrime && p / primes >= primes ; ++i) { if (p % primes 0) } if } for ( i = 1; i < PrimeIndex; i++) return 0; } balbazar tarafından 24/Ara/16 16:51 tarihinde düzenlenmiştir