Форум программистов, компьютерный форум CyberForum.ru

проверьте пожалуйста еще один код программы, кто может - C++

Восстановить пароль Регистрация
 
Никуся
0 / 0 / 0
Регистрация: 17.02.2010
Сообщений: 63
09.06.2010, 14:34     проверьте пожалуйста еще один код программы, кто может #1
проверьте пожалуйста еще один код программы(кто может
вот условие: программа должна проверить число является ли оно простым или нет?
Простое число, целое положительное число, большее, чем единица, не имеющее других делителей, кроме самого себя и единицы: 2, 3, 5, 7, 11, 13...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int main()
{
    int n, d, r; //r-отсаток от деления n на d
    cout<<"Введите целое число" ;
    cin>>n;
    d=2; //будем делить на 2
    do 
        { 
           r=n/d;
            if(r!=0) d++;
         }
    while (r!=0); //пока не разделится на d
    if (d==n)
    cout<<"простое число"<<n;
    else
    cout<<"Непростое число"<<n;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Airhand
 Аватар для Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
09.06.2010, 18:21     проверьте пожалуйста еще один код программы, кто может #2
Я уже вижу ошибки, не запуская код на компе: в с++ всегда r будет равно 0, т.к. оно целое и будет отброшен дробный "хвост". Если вместо int в пятой строке использовать что-нибудь типа float, то можно зацыклиться и завесить комп.
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
09.06.2010, 18:25     проверьте пожалуйста еще один код программы, кто может #3
C++
1
r=n/d;
Вот это не остаток а целочисленное деление, r=n % d; нужно
Никуся
0 / 0 / 0
Регистрация: 17.02.2010
Сообщений: 63
09.06.2010, 18:27  [ТС]     проверьте пожалуйста еще один код программы, кто может #4
в коде нужно исправить только это?или еще что то неверно?
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
09.06.2010, 18:33     проверьте пожалуйста еще один код программы, кто может #5
На глаз, должно работать.
Airhand
 Аватар для Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
09.06.2010, 18:36     проверьте пожалуйста еще один код программы, кто может #6
Этот алгоритм, даже с правками Manjak, завесит комп. А что если остаток не будет равен 0 никогда, тогда цикл будет "вечный" и комп повиснет.

Добавлено через 1 минуту
Пример, число 3.
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
09.06.2010, 18:37     проверьте пожалуйста еще один код программы, кто может #7
Каким образом никогда? Даже если число поделить на него же? Оригильно-с

"число 3", а на второй итерации он никак не выйдет? 3 % 3 == 0
Airhand
 Аватар для Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
09.06.2010, 18:39     проверьте пожалуйста еще один код программы, кто может #8
Недоглядел: там идёт увеличение делителя.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
09.06.2010, 18:40     проверьте пожалуйста еще один код программы, кто может #9
Цитата Сообщение от Никуся Посмотреть сообщение
программа должна проверить число является ли оно простым или нет
Используй функцию:
C++
1
2
3
4
5
6
7
8
9
bool IsSimpleNumber(int n) {
  if (n <= 1)
    return false;
 
  for (int j = 2; j * j <= n; j++)
    if (n % j == 0) return false;
 
  return true;
}
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
09.06.2010, 18:43     проверьте пожалуйста еще один код программы, кто может #10
Я вот было когда-то подумывал как решето Эратосфена оптимизировать, не проверял, но по идеи достаточно проверить деление на 2, 3, 5, 7

Пысы: посидел, подумал, бред - не будет работать если число это произведение двух простых
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2010, 18:46     проверьте пожалуйста еще один код программы, кто может
Еще ссылки по теме:

Проверьте код пожалуйста C++
Кто может закомментировать код программы С++ ? C++
C++ Проверьте код пожалуйста на цикл в С++
C++ Проверьте код пожалуйста
C++ Проверьте пожалуйста код на ошибку

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

Или воспользуйтесь поиском по форуму:
Никуся
0 / 0 / 0
Регистрация: 17.02.2010
Сообщений: 63
09.06.2010, 18:46  [ТС]     проверьте пожалуйста еще один код программы, кто может #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int main()
{
int n, d, r; //r-отсаток от деления n на d
cout<<"Введите целое число" ;
cin>>n;
d=2; //будем делить на 2
do
{
r=n%d;
if(r!=0) d++;
}
while (r!=0); //пока не разделится на d
if (d==n)
cout<<"простое число"<<n;
else
cout<<"Непростое число"<<n;
}


вот так правильно?я просто поменяла знак / на %
Yandex
Объявления
09.06.2010, 18:46     проверьте пожалуйста еще один код программы, кто может
Ответ Создать тему
Опции темы

Текущее время: 09:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru