Member 12744605 Ответов: 2

C++ как сгенерировать простые числа с помощью сита Эратосфена?


Мне нужно сгенерировать простые числа до 150.
Это то, что у меня есть до сих пор. Что должно быть изменено отсюда?

Что я уже пробовал:

int main(void)
{
	int p=2, prime[150], i,n;

	for (p = 2; p <= 150; ++p){
		for (i = 2; i <= 150; ++i){
			n = p*i;
			prime[i] = i;
			prime[n] = 1;	
		}
	}
	printf("%i\n", prime[i]);

	return 0;
}

Richard MacCutchan

Поищите в разделе статьи, там можно найти образцы.

Philippe Mori

Используйте блок кода и отформатируйте свой код...

Кстати, найти эту информацию с помощью Google или Bing, вероятно, будет не очень сложно...

Philippe Mori

Всякий раз, когда это возможно, объявляйте свою переменную при первом ее использовании. Это плохая привычка из ограниченного языка объявлять переменную в верхней части функции.

2 Ответов

Рейтинг:
1

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.

Совет: возьмите лист бумаги и попробуйте сделать это вручную, ваша программа должна использовать ту же процедуру.
Задайте себе несколько вопросов:
- Откуда мне знать, что действительное число-простое ?
- Когда я получил новое простое число, каково значение первого кратного этого простого числа ,которое еще не проверено как не простое?


Рейтинг:
0

CPallini

Если вы хотите реализовать такой алгоритм, то сначала вы должны его понять. Чтобы понять его, хорошее чтение - это сама его страница в Википедии: Сито Эратосфена-Википедия, свободная энциклопедия[^].