Алгоритм проверки числа на простоту(C++)

C#/C++/др.

Сообщение Алгоритм проверки числа на простоту(C++)
» 22 июн 2018, 15:46

Всем Привет, я учу C++ и я написал алгоритм проверки числа на простоту, в алгоритме также есть вариант вывести все простые числа до введенной пользователем границы. Плз не судите строго может кому-нибудь поможет)
Код: Выделить всё
#include <iostream>
#include <string>
using namespace std;

int main(){
    string way;
    bool cond = true;
    int h;
    cout<<"Do you want all prime numbers or one   1. all 2. one ";
    cin>>way;
    while (cond){
        if (way == "one"){
            h = 0;
            int number;
            cond = false;
            cout<<endl<<endl<<"Please input the number ";
            cin>>number;
            if (number % 2 != 0){
                string answer;
                int temp = 5;
                for (int i = 2; temp >= 3; i = i-2){
                    temp = number - i;
                    if (number % temp == 0){
                        answer = "is prime";
                    }else{
                    answer = "isn't prime";
                    }
                    cout<<answer;
                    string yesNo;
                        cout<<endl<<"Do you want to exit code ";
                        cin>>yesNo;
                        if (yesNo == "yes"){
                            break;
                        }
                        if (yesNo == "no"){
                            cout<<endl<<"Please input the number ";
                            cin>>number;
                            temp = 5;
                            continue;
                        }
                }
            }else{
                string answer;
                answer = "isn't prime";
                cout<<answer;
            }
        }else if (way == "all"){
            int end;
            h = 1;
            cond = false;
            cout<<"Please input the end ";
            cin>>end;
            int primes[end];
            primes[0] = 2;
            primes[1] = 3;
            int index = 2;
            int ind = 1;
            for(int i=3; i<=end; i=i + 2){
                if (i % primes[ind] != 0){
                    if (primes[ind] * primes[ind] > i){
                        primes[index++] = i;
                        ind = 1;
                    }else{
                        ind++;
                        i = i-2;
                    }
                }else{
                    ind = 1;
                }
            }
            for(int i = 0; i<index; i++){
                cout<<i+1<<". "<<primes[i]<<endl; 
            }
        }else{
            cout<<"Programme can't understand the word "<<way<<". Input all or one. ";
            cin>>way;
            h = 3;
        }
        if (h != 3){
            string exit1;
            cout<<"Do you want the second variant ";
            cin>>exit1;
            bool cond1 = true;
            while (cond1){
                if (exit1 == "yes"){
                    cond = true;
                    cond1 = false;
                    if (h == 0){
                        way = "all";
                    }else if (h == 1){
                        way = "one";
                    }
                }else if (exit1 != "no"){
                    cout<<"Programme can't understand the word "<<exit1<<". Input yes or no. ";
                    cin>>exit1;
                    cond1 = true;
                }else{
                    break;
                }
            }
        }
    }
    return 0;
}
Аватара пользователя

Участник
Сообщений: 5
Я тут с 25 фев 2017
Двиг: C2, JS
Лицензия: Free
Репутация 3 [ ? ]


Вернуться в ПК

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх