Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2017, 11:13   #1
Rainbow_
Пользователь
 
Регистрация: 18.03.2017
Сообщений: 35
Радость В выводе простых чисел остались кратные 5

Здравствуйте!
Программа для вывода простых чисел почему-то оставляет кратные 5. Помогите, пожалуйста, разобраться.
Код:
#include<iostream>
using namespace std;
int main()
{
int i,j;
bool k;
for (i=3;i<=1000;i++)
	{ k=true;
		for (j=2; j<i; j++)
		{
			if (i%j==0)
			k=false;
			break;
		}
	if (k)
	{cout<<i<<",";}
	
	}
Rainbow_ вне форума Ответить с цитированием
Старый 20.04.2017, 11:20   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
if (i%j==0)
{
  k=false;
  break;
}
Иначе второй цикл будет выполнять только одну итерацию.
p51x вне форума Ответить с цитированием
Старый 20.04.2017, 11:26   #3
Rainbow_
Пользователь
 
Регистрация: 18.03.2017
Сообщений: 35
По умолчанию

там так и есть...
и как сделать по-другому?
Rainbow_ вне форума Ответить с цитированием
Старый 20.04.2017, 11:27   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ошибка тут -
Цитата:
Код:
if (i%j==0)
			k=false;
			break;
надо:
Код:
if (i%j==0) {
			k=false;
			break;
}
а ещё цикл нужно от 2 начинать (2 - первое простое число):
Код:
for (i=2;i<=1000;i++)
ну и перебирать все делители до самого числа нет смысла,
обычно это ограничивают либо половиной числа (i/2) или, более эффективно и правильно - до корня из i
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.04.2017, 11:27   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Rainbow_ Посмотреть сообщение
там так и есть...
Т.е. по Вашему
Код:
if (i%j==0)
k=false;
break;
Равно
Код:
if (i%j==0)
{
  k=false;
  break;
}
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 20.04.2017, 11:35   #6
Rainbow_
Пользователь
 
Регистрация: 18.03.2017
Сообщений: 35
По умолчанию

Ой, да, у меня в начальном варианте в if была 1 строка, там не надо было {}. Спасибо большое!
Rainbow_ вне форума Ответить с цитированием
Старый 20.04.2017, 11:37   #7
Rainbow_
Пользователь
 
Регистрация: 18.03.2017
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
обычно это ограничивают либо половиной числа (i/2) или, более эффективно и правильно - до корня из i
А я думала, при чём там корень! Теперь понятно!
Rainbow_ вне форума Ответить с цитированием
Старый 20.04.2017, 11:58   #8
Rainbow_
Пользователь
 
Регистрация: 18.03.2017
Сообщений: 35
По умолчанию

Цитата:

а ещё цикл нужно от 2 начинать (2 - первое простое число):
Там в условии было написано, что числа 1 и 2 простыми не считаются, (ШАГ). Я ещё удивилась, ведь по определению если делится само на себя и на 1
Rainbow_ вне форума Ответить с цитированием
Старый 20.04.2017, 12:00   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Там кроме до корня еще можно четные выбросить из проверки на простоту
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.04.2017, 12:06   #10
Rainbow_
Пользователь
 
Регистрация: 18.03.2017
Сообщений: 35
По умолчанию

ну ето уже слишком круто, оно так быстро проверяется, что наверное проще не выбрасывать.
Rainbow_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для поиска простых, простых парных и взаимнопростых чисел in da fly Помощь студентам 1 26.05.2011 23:30
выбор из ряда чисел простых чисел изо Паскаль, Turbo Pascal, PascalABC.NET 5 13.04.2011 22:51
Pascal В интервале целых чисел найти все числа кратные 7 NewBi Помощь студентам 5 19.03.2010 19:55
Найти два числа,сумма каких равняется сумме всех других чисел, которые остались! Помогите будьте людьми! Snake08 Паскаль, Turbo Pascal, PascalABC.NET 4 08.12.2008 18:33
Я-юрист, есть задача - Найти сумму всех чисел из промежутка от А до В, кратные 13 и 5 Filosofijka Помощь студентам 1 24.11.2008 19:57