powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с решением задачи на простые числа
4 сообщений из 4, страница 1 из 1
Проблема с решением задачи на простые числа
    #33339134
BioIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
 
#include <iostream>
#include <math.h>
using namespace std;

int n, i;
bool prost = true;

int main()
{
	for (n = 1; n <= 20; n++)
	{
		double sqrt_of_n = sqrt(static_cast<double>(n));
		for (i = 2; i <= sqrt_of_n; i++)
		{
			if(n % i == 0)
			{
				prost = false;
			}
		}

		if(prost)
			cout << n << " Простое!!!" << endl;
		else
			cout << n << " Не простое." << endl;
	}
	return 0;
}
 

Теперь проблема.
Как только цикл доходит до значения n=4, начинается "веселье". Почему-то начиная с 4 все числа непростые.
Это как? Что неверно в коде???? Помогите разобраться. Зарание спасибо.
-----------------------------------------------------------
Ничего я не боюсь,
Если рядом C++.
...
Рейтинг: 0 / 0
Проблема с решением задачи на простые числа
    #33339295
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вижу одну строчку с prost = false;
А строчки с prost = true; ... нет, тоже вижу одну, но внутренний голос мне подсказывает, что одной явно недостаточно :-)
...
Рейтинг: 0 / 0
Проблема с решением задачи на простые числа
    #33339403
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BioIgor
Код: plaintext
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.
 
#include <iostream>
#include <math.h>
using namespace std;

int n, i;
bool prost = true;

int main()
{
	for (n = 1; n <= 20; n++)
	{
		double sqrt_of_n = sqrt(static_cast<double>(n));
		for (i = 2; i <= sqrt_of_n; i++)
		{
			if(n % i == 0)
			{
				prost = false;
			}
		}

		if(prost)
			cout << n << " Простое!!!" << endl;
		else
			cout << n << " Не простое." << endl;
	}
	return 0;
}
 

Теперь проблема.
Как только цикл доходит до значения n=4, начинается "веселье". Почему-то начиная с 4 все числа непростые.
Это как? Что неверно в коде???? Помогите разобраться. Зарание спасибо.
-----------------------------------------------------------
Ничего я не боюсь,
Если рядом C++.
Я бы сделал не так... Но если говорить об этой программе, то ошибка видна сразу. Переменную prost надо "обновлять" для каждого нового числа. Т.е. имеем такой цикл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
...
for (n =  1 ; n <=  20 ; n++)
	{
	       double sqrt_of_n = sqrt(static_cast<double>(n));
                prost=true;
		for (i =  2 ; i <= sqrt_of_n; i++)
		{
			if(n % i ==  0 )
			{
				prost = false;
			}
		}

		if(prost)
			cout << n << " Простое!!!" << endl;
		else
			cout << n << " Не простое." << endl;
	}
...
...
Рейтинг: 0 / 0
Проблема с решением задачи на простые числа
    #33340745
BioIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Станислав C.
Огромное спасибо! Теперь всё работает изЮмительно. Впреть учту. Ещё раз пасиб!!!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с решением задачи на простые числа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]