Şimdi Ara

c++ asal sayı toplama (ödev)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
842
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • merhaba arkadaşlar. c++ ile savaşıyorum yardımcı olabilirmisiniz.
    hocanın vermiş olduğu ödev "okul numaranız ile doğum tarihinizin toplamına kadar olan asal sayıların toplamını veren bir program yazınız" istediği program okul numaramızı sorcak doğum tarihimizi sorcak ve toplama kadar olan asal sayıların toplamını verecek. biyere kadar gelebildim ama tıkandım. oluşturabildiğim kod aşağıda nasıl bi ekleme yapabilirim. (yazılım bilen biri değilim yaş dolayısı ile benden geçmiş :P okul no ile doğumyılının son 2 hanesi alıncak.) listelemesi önemli değil sadece toplam verse yeterli
    #include <iostream>
    using namespace std;

    int main(){

    int okulno;
    int dogumyili;




    cout << "okul numaranizi giriniz: " << "\n" ;
    cin >> okulno;
    cout << "dogum yilinizi giriniz: " << "\n" ;
    cin >> dogumyili;
    cout << "hesaplanacak deger: "<< okulno+dogumyili << "\n";




    int deger=okulno+dogumyili;

    for (int sayac=1; sayac<deger; sayac++)
    {
    int asal, test;
    test = sayac;
    asal = 1;
    while (test--> 2)
    if ((sayac % test) == 0)
    asal = 0;
    if (asal == 1)
    cout<< sayac << " bir asal sayidir!\n";
    }

    system("pause");
    return 0;}







  • Topladıgını varsayalım o da 14642172000 boyle bir şey olsun.

    1 arasında 14642172000 gibi epey büyük bir sayı eder.

    burada hazır asal sayı bulan algoritmaları kullanmanı tavsiye ederim.
    https://www.geeksforgeeks.org/sieve-of-eratosthenes/ bu da senin ilacın bunu kendi koduna implemente et.



    < Bu mesaj bu kişi tarafından değiştirildi I0SER_b0y -- 30 Nisan 2020; 3:45:10 >
  • Kod dağınık. Alttaki bloğu onksiyon olarak düzenlemediğinden sadece asal sayı testi yapıyor, sayıyı alıp eklemiyor ayrıca test de yanlış.

    Asal sayı testi için sieve of eratosthenes dan daha temel olan liste karşılaştırması yöntemini kullanabilirsin

    C++ da bir liste oluştur ve 1 hariç ilk 2 asal sayıyı listeye ekle yani başlangıçta liste {2, 3} olacak, 4'ten itibaren bir while ile no+yıl 'a kadar döngü kur.

    Döngüde {2, 3} ten herhangi biri ile tam bölündüğü sürece ilerle, ilk bölünemeyen 5, 5'i listeye ekle {2, 3, 5} oldu bu şekilde devam ettiğinde oluşan liste aradığın listedir.

    C++17'de lambda özelliği var, + lambdasını listeye map'le.
  • @I0SER_b0y linkteki örnek sadece listeliyor ödevde istenilen bu sayıları toplaması. son 2 hane alınacağı için oda 93 yapıyor 93e kadar asal sayıları toplaması lazım.

    @vonderplanitz yazılımla alakalı bilgim olmadığı için söylediklerinizi anlamadı. harita mühendisliği okuyorum programlama secmeli gibi birşey. bilseniz iyi olur kafasında. 4 yada 5 ders aldık sonrası uzaktan eğitim yani dili ve mantığı bilmiyorum. şuana kadar oluşturduğum kodlarıda derleme olarak oluşturabildim. döngüyü benm için kurabilirmisiniz rica etsem
  • niCkSiz_adAmxD kullanıcısına yanıt
    aslında onu da rahatlıkla yapabilirisin

    sayı için % 100 kalanı verir sonra da

    kalana mod diyelim

    for (i to mod )
    for(j to i)

    if(i % j== 0)
    prime=true

    else if(prime==false)
    sum+=i




    https://paste.ubuntu.com/p/wBrKTF5Vbp/ hiç bir şey yapmadım sadece cok cok ufak bir degişiklik.

    söyle basit bir taslak oluşturulabilir.



    < Bu mesaj bu kişi tarafından değiştirildi I0SER_b0y -- 1 Mayıs 2020; 1:57:38 >
  • işlemi yaptım arkadaşlar teşekkür ediyorum
  • işlemi yaptım arkadaşlar teşekkür ediyorum
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.