Çözüldü C++ Prime numbers nasıl bulunur?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

RSK06

Hectopat
Katılım
29 Aralık 2020
Mesajlar
2.289
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Write a program in C++ to find Prime number within a range.
Ben başlangıç ve bitiş noktalarını gireceğim mesela cin >> 2, cin >> 200.
Bu sayılar arasındaki asal sayıları nasıl bulabilirim?

Input number for starting range: 1
Input number for ending range: 100.
The Prime numbers between 1 and 100 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97.
The Total number of Prime numbers between 1 to 100 is: 25.
 
Son düzenleme:
Çözüm
Kod:
#include <algorithm>
#include <exception>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <numeric>
#include <string>
#include <vector>
#include <chrono>
#include <bitset>
#include <array>

using namespace std;

void findPrimes(vector<int>& v, int start, int end) {
    auto flag{ 0 };

    if (start > end || start < 0) {
        throw invalid_argument("Duzgun sayi gir");
    }

    for (auto i{ start }; i <= end; ++i) {
        for (auto j{ 2 }; j < i; ++j) {
            if (!(i % j)) {
                ++flag;
                break;
            }
        }

        if (!flag) {
            v.push_back(i);
        }

        flag = 0;
    }
}

void print(vector<int>& v) {
    for (auto& i : v)
        cout << i << " ";
    cout << endl;
}

int main() {
    vector<int> v;
    auto start{ 0 };
    auto end{ 0 };
    cout << "sayilar gir: ";
    cin >> start >> end;

    try {
        findPrimes(v, start, end);
    }
    catch (const exception& e)     {
        cout << e.what() << endl;
    }
    
    print(v);

    return 0;
}
C++ finding prime numbers yazdıktan sonra karşıma çıkan sitede şu kodu buldum:
Kod:
#include <iostream>
using namespace std;

int main() {
    int low, high, i;
    bool isPrime = true;

    cout << "Enter two numbers (intervals): ";
    cin >> low >> high;

    cout << "\nPrime numbers between " << low << " and " << high << " are: " << endl;

    while (low < high) {
        isPrime = true;
        if (low == 0 || low == 1) {
            isPrime = false;
        }
        else {
            for (i = 2; i <= low / 2; ++i) {
                if (low % i == 0) {
                    isPrime = false;
                    break;
                }
            }
        }
        
        if (isPrime)
            cout << low << " ";

        ++low;
    }

    return 0;
}
Bu kod isteğinizi karşılıyor.
 
Kod:
#include <algorithm>
#include <exception>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <numeric>
#include <string>
#include <vector>
#include <chrono>
#include <bitset>
#include <array>

using namespace std;

void findPrimes(vector<int>& v, int start, int end) {
    auto flag{ 0 };

    if (start > end || start < 0) {
        throw invalid_argument("Duzgun sayi gir");
    }

    for (auto i{ start }; i <= end; ++i) {
        for (auto j{ 2 }; j < i; ++j) {
            if (!(i % j)) {
                ++flag;
                break;
            }
        }

        if (!flag) {
            v.push_back(i);
        }

        flag = 0;
    }
}

void print(vector<int>& v) {
    for (auto& i : v)
        cout << i << " ";
    cout << endl;
}

int main() {
    vector<int> v;
    auto start{ 0 };
    auto end{ 0 };
    cout << "sayilar gir: ";
    cin >> start >> end;

    try {
        findPrimes(v, start, end);
    }
    catch (const exception& e)     {
        cout << e.what() << endl;
    }
    
    print(v);

    return 0;
}
 
Son düzenleme:
Çözüm
Asal sayı bulan programı yazabiliyorsan bunu da yazmak çok kolay. Tek farkı asal bulan kod bloğunu döngü içine alacaksın. İki değişken tanımla. Bir tanesine başlangıç değerini, diğerine bitiş değerini ata. Örneğin a = 1, b = 100 diyebilirsin. Döngü her döndüğünde a sayısının asal olup olmadığını kontrol edecek ve ekrana bastıracak. 100 olduğunda döngü bitecek.
 
int low, high, i; bool isPrime = true;
Değişkenlerin tanımlanması. integer low, high (küçükten büyüğe doğru gidebilmesi için); bool isPrime = true; Asal olup olmadığını belirtmek için belirlenmiş değişken.

cout << "Enter two numbers (intervals): "; cin >> low >> high; cout << "\nPrime numbers between " << low << " and " << high << " are: " << endl;
Bu kısmı bildiğinizi varsayıyorum.
while (low < high) { isPrime = true;
if (low == 0 || low == 1) {
isPrime = false; }
else {
for (i = 2; i <= low / 2; ++i) {
if (low % i == 0) {
isPrime = false; break; }
}
}
if (isPrime) cout << low << " "; ++low; }
Bu kısımda bir loop oluşturulmuş. Eğer low 0 veya 1 se asal değildir, demiş ve bunun üzerine arttırmaya başlıyor. For loopunda low, i değişkeni kendisine eşitlenene veya ondan büyük hale gelene kadar lowun i modunu alıyor. (Mod kalan bulma) Eğer kalan 0 ise asal değildir demek oluyor. Eğer low i ye eşit veya daha büyük hale gelene kadar 0 kalan elde edilmediyse isprime başta true atandığından ve yukarıda ki hiç bir şey onu false yapmadığında çıktı olarak low'da o an bulunan değişken yani asal sayımız oluyor ve low bir kez artıyor.
Anlamadığın nokta varsa sorabilirsin. @RSK06
 

Yeni konular

Geri
Yukarı