Помогни ни да направим Uroci.net по - богат! Добави урок

Прости числа

C++ » C++
gogsi   трудност:    видян: 12280

Здравейте! В този урок ще ви покажа как да проверите дали едно число е просто.

 

1. Отворете нов файл на C++ и го кръстете по ваш избор.

 

2.Добавете следният код:

 

#include <iostream>
using namespace std;
int main ()
{
int a,o,g=0;
cin>>a;
  for(o=2; o<a; o++)
    {
        if(a%o==0)
        {
        g=1;
        break;
        }
    }
    if (g==0)
        cout << "Prosto";
    else
    cout<<"Sastavno";
        return 0;
}


Обяснение:

#include <iostream>// Използваме библиотека iostream 
using namespace std;//С това правим така че да не слагаме пред всяка команда std;
int main ()//Правим променлива в която ще пишем кода
{

int a,b,prosto=0;//Правим 3 променливи 'a' за числото, което проверяваме,'b' за делител с които ще раберем дали 'а' е просто и променлива  'prosto' в която ще съхраним 1 или 0. 

cin>>a;//Въвеждаме от клавиатурата 'а'
  for(b=2;b<a; b++)//Правим цикъл
    {
        if(a%b==0)//Ако а%b = 0 т.е ако числото не е просто.
        prosto=1;//prosto става равно на 1
        break;//Прекъсваме цикъла (може и без този ред)
        }//ако a%b==0 не е вярно цикъла ще продължи докато 'b' е по - малко от 'а' или докато a%b==0 стане вярно
    }
    if (prosto==0)//Ако 'prosto' = 0(ако не сме открили делител на ,които 'а' да се раздени без остатък)
        cout << "Prosto";//Изведи на екрана "Prosto"
    else//Иначе
    cout<<"Ne e prosto";//Изведи на екрана "Ne e prosto" 
        return 0;//Даваме на променливата 'main' стойност 0 и завършваме програмата 
}



Коментари (3)

ovvn3r на 02.01 2011 в 20:02ч.
Алгоритъмът е неефективен. Нужно е да провериш само до sqrt(a), т.е. цикълът по-добре да бъде for (o = 2; o*o < a; o++). Освен това употребата на break, continue, goto не е препоръчителна, защото в по-сложни цикли се губи логиката на програмата. Поздрави!
tanjo на 29.01 2011 в 16:58ч.
Може да се направи и по по-лесен начин..
KristianS на 09.04 2013 в 01:23ч.
@ovvn3r, всъщност доста подцени алгоритъма, че даже и допусна грешка. Ако следваме твоят ред на мисли и проверяваме 25 дали е просто число, то твоят вариант ще го изкара като просто, защото цикъла ще излезе преди да е разделило "a" с числото 5.
Луупът трябва да изглежда така : for (o = 2; o * o

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com