Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
#1

Простое число или нет - C++

28.12.2009, 10:41. Просмотров 1063. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include"conio.h"
#include"math.h"
using namespace std;
int main()
{
    int n,i,k;
    bool np;
    cout<<"Enter n integer"<<endl;
    cin>>n;
    k=static_cast<int>(sqrt(n)+1);
    i=1;
    np=true;
    while (i<=k)
    {
          if ((n % i)==0)
          {
                 np=false;
          }
          i=i+1;
    }
    if (np==true) 
    {
        cout<<"Integer is prime";
    }
    else
    {
        cout<<"Integer is not prime";
    }
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2009, 10:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простое число или нет (C++):

Определить, простое число или нет - C++
Программа должна говорить простое число или нет. Подскажите в чем ошибка кто знает. #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include...

Вводится целое число определить простое оно или нет - C++
Помогите решить задачу. Вводится целое число определить простое оно или нет.

Функции. Проверить, простое число или нет. Увеличить его значение на натуральное число M. Проверить, осталось ли оно простым - C++
Помогите пожалуйста 1. Дано натуральное число N, проверить, простое оно или нет. Увеличить его значение на натуральное число M....

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число - C++
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число - C++
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число. - C++
6.2.2. Помогите, пожалуйста, решить задачи в С++ с помощью функций. Дано простое число. Составить функцию, которая будет находить...

5
Humanoid
Почетный модератор
9870 / 3769 / 173
Регистрация: 12.06.2008
Сообщений: 11,175
28.12.2009, 11:21 #2
Если я ничего не путаю, то простые числа - это такие, которые делятся только на 1 или на самих себя. То что в 11 строке берешь корень - это не слишком много возможных значений отрезает? Просто я раньше не задумывался... но лично я бы разделил пополам, что бы не рисковать. И начинать проверку в 12 строке нужно не с 1, а с 2. В общем, я бы сделал так:
11 строка: k=(n/2)+1;
12 строка: i=2;
А после 18 строки ещё бы добавил break; что бы не проверял дальше... иначе почти всегда будет выдавать, что число простое.

Но на счёт 11 строки может я и перестраховываюсь... просто думать лень
1
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
28.12.2009, 11:28  [ТС] #3
HUMANOID, огромное вам спасибо за 12 строчку! А на счёт корня, всё правельно. Я вычислил и доказал...
0
Sich_Taras
14 / 14 / 1
Регистрация: 08.10.2009
Сообщений: 114
28.12.2009, 11:30 #4
Все верно только можно в цикле остановиться, когда ты выяснил(а), что число простое.

C++
1
2
3
4
5
6
7
8
9
while (i<=k)
    {
          if ((n % i)==0)
          {
                 np=false;
                [B] break;[/B]
          }
          i=i+1;
    }
Добавлено через 1 минуту
и нужно начинать с і = 2.
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 908
01.02.2010, 15:24 #5
вообще числа 1 и 2 тоже простые числа.....
думаюих тоже учесть стоит.
думаю такой код подходит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int n,i,k,f=0;
    printf("vvedite 4islo ");
    scanf("%d",&n);
    if(n==1 ||n==2)
    {
    printf("prostoe 4islo\n\n");
    system("pause");
    exit(2);
    }
    else
    {
    k=int(sqrt(n)+1);
     {
    for(i=2;i<=k;i++)
      {
        if ((n % i)==0)
        f=1;
      }
     }
    }
      if(f==1)
        printf("sostavnoe 4islo\n\n");
       else
         printf("prostoe 4islo\n\n");
    system("pause");
}
1
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
01.02.2010, 19:41 #6
1 - не является простым или составным числом
2, 3, 5 - простые числа
4, 6 - составные числа

Добавлено через 1 минуту
Я понимаю конечно что все любят изобретать велосипед ...
k=static_cast<int>(sqrt(n)+1);
Достаточно проверять до sqrt(n) включительно.
0
01.02.2010, 19:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2010, 19:41
Привет! Вот еще темы с ответами:

Дано простое число. Составить функцию,которая будет находить следующее за ним простое число. - C++
дано простое число.составить функцию,которая будет находить следующее за ним простое число.

Простое или составное число - C++
Не могу понять, почему мой код не работает Если ввожу, например, 13 пишет, что это составное число #include &lt;iostream&gt; #include...

Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и распечатат - C++
Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и...

Необходимо вывести строку prime, если число простое, или composite, если число составное - C++
Уважаемые программисты, проверьте, пожалуйста, решение задачи Проверьте, является ли число простым. Вводится одно число n. Формат...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.