Şimdi Ara

Özel durum işlenemedi hatası

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
101
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar, visual studio da girilen sayıdan sonraki 5 asal sayıyı yazdırmak için özyinelemeli kod yazıyordum ama ekteki hatayı aldım. lütfen yardım.

    Kod

    Yığını:
    #include <iostream> using namespace std; /*Klavyeden girilen bir sayıdan sonraki ilk 5 asal sayıyı bulan ve ekranda gösteren C veya C++ kodunu yazınız. */ int asal1(int x, int i) { if (x < 2) return 0; if (x % i == 0) return 0; if (i == 1) return 1; return asal1(x, i - 1); } int main() { setlocale(LC_ALL, "Turkish"); int girdi, sayac = 0, sonuc; cout << "sayıyı girin : "; cin >> girdi; cout << "sonraki 5 asal sayı : "; girdi++; for (; sayac < 5; girdi++) { sonuc = asal1(girdi, girdi / 2); if (sonuc == 1) { cout << girdi << "\t"; sayac++; } } return 0; }






    Özel durum işlenemedi hatası







  • Daha farklı asal sayı belirleme yöntemleri olsa da en klasik yöntem şu :


    bool asal(int x) {

    for (int d = 2; d * d <= x; d++) {

    if (x % d == 0)

    return false;

    }

    return true;

    }


    Ama mesajda belirtildiği gibi yapacaksanız,


    Kod

    Yığını:
    if (x % i == 0) return 0; if (i == 1) return 1;


    bu iki if'in yerini değiştirmeniz lazım.


    x asal sayı bile olsa i 1'e ulaştığı için x%i == 0 her zaman true dönüyor, dolayısıyla hiçbir sayıyı asal olarak bulamıyor, bu da sonsuz döngüye giriyor. Hata burada. bu iki if'in sırası değişmeli.





  • Bende o günün sabahına farkettim hatayı. E-posta bildirimi almadığım için mesajınızı yeni gördüm. Geç kalınmış bir teşekkür olsa da cevapladığınız için çok teşekkür ederim. ;)

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.