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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2010, 09:33   #1
Fantom.as
Пользователь
 
Аватар для Fantom.as
 
Регистрация: 19.04.2010
Сообщений: 62
Сообщение Первые 30 простых чисел

Как можно найти первые 30 простых чисел?
Результаты записывается в массив
<--<--<--Нажми на весы слева <---<---<---
Fantom.as вне форума Ответить с цитированием
Старый 30.10.2010, 14:04   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Вот вам функция для определения, является ли число простым:
Код:
bool IsPrime(int N)
{
for (int i = 2; i < N; i++)
 if (N % i == 0)
  return false;
return true;
}
Дальше, думаю, разберетесь.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 30.10.2010, 15:37   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как можно
А как нельзя пройти вниз страницы к ссылка на похожие темы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2010, 17:21   #4
Fantom.as
Пользователь
 
Аватар для Fantom.as
 
Регистрация: 19.04.2010
Сообщений: 62
Сообщение

Ну а через решето можно как-нибудь? Чтоб алгоритм по красивее был?
<--<--<--Нажми на весы слева <---<---<---
Fantom.as вне форума Ответить с цитированием
Старый 30.10.2010, 17:24   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Чем же этот не нравится?
_-Re@l-_ вне форума Ответить с цитированием
Старый 30.10.2010, 17:32   #6
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
bool sost[256] = {false};
int prost[30] = {0};
sost[0] = true;
unsigned count(0), curnumb(1);
while(count < 30)
{
	if(sost[++curnumb-1])
		continue;
	for(int i=curnumb*2-1; i<256; i+=curnumb)
		sost[i] = true;
	prost[count++] = curnumb;
}

for(int i=0; i<30; i++)
	printf("%d ", prost[i]);
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 30.10.2010 в 21:07.
Syuf вне форума Ответить с цитированием
Старый 30.10.2010, 19:34   #7
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

http://ru.wikipedia.org/wiki/Решето_Эратосфена

Код:
Вход: натуральное число n

Пусть A — булевый массив, индексируемый числами от 2 до n, изначально заполненный значением true.

для i = 2, 3, 4, ..., пока i^2 ≤ n:
  если A[i] = true:
    для j = i^2, i^2 + i, i^2 + 2i, ..., пока j ≤ n:
      A[j] = false

Теперь все числа i, такие что A[i] = true, являются простыми.
coinkrsk вне форума Ответить с цитированием
Старый 31.10.2010, 12:08   #8
Fantom.as
Пользователь
 
Аватар для Fantom.as
 
Регистрация: 19.04.2010
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Syuf Посмотреть сообщение
Код:
bool sost[256] = {false};
int prost[30] = {0};
sost[0] = true;
unsigned count(0), curnumb(1);
while(count < 30)
{
	if(sost[++curnumb-1])
		continue;
	for(int i=curnumb*2-1; i<256; i+=curnumb)
		sost[i] = true;
	prost[count++] = curnumb;
}

for(int i=0; i<30; i++)
	printf("%d ", prost[i]);
А ты можешь мне код объяснить. Я новичок в программировании на Си
<--<--<--Нажми на весы слева <---<---<---
Fantom.as вне форума Ответить с цитированием
Старый 31.10.2010, 14:00   #9
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
bool sost[256] = {false}; // Массив чисел (индекс+1 = число), true - составное
int prost[30] = {0}; // Результирующие простые
sost[0] = true; // 1 - составное
unsigned count(0), curnumb(1); // Кол-во простых и текущий номер соответственно
while(count < 30) // Ищем 30 простых
{
	if(sost[++curnumb-1])
		continue; // Если уже отмечено как сост. идем дальше
	for(int i=curnumb*2-1; i<256; i+=curnumb)  // Отмечаем все кратные данному простому
		sost[i] = true;
	prost[count++] = curnumb;  // Записываем простое
}

for(int i=0; i<30; i++)
	printf("%d ", prost[i]);
Цитата:
А ты можешь мне код объяснить. Я новичок в программировании на Си
Еще какие желания, сэр?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 31.10.2010, 14:30   #10
Fantom.as
Пользователь
 
Аватар для Fantom.as
 
Регистрация: 19.04.2010
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Syuf Посмотреть сообщение
Код:
bool sost[256] = {false}; // Массив чисел (индекс+1 = число), true - составное
int prost[30] = {0}; // Результирующие простые
sost[0] = true; // 1 - составное
unsigned count(0), curnumb(1); // Кол-во простых и текущий номер соответственно
while(count < 30) // Ищем 30 простых
{
	if(sost[++curnumb-1])
		continue; // Если уже отмечено как сост. идем дальше
	for(int i=curnumb*2-1; i<256; i+=curnumb)  // Отмечаем все кратные данному простому
		sost[i] = true;
	prost[count++] = curnumb;  // Записываем простое
}

for(int i=0; i<30; i++)
	printf("%d ", prost[i]);
Еще какие желания, сэр?
А как способ называется? Алгоритм я имею ввиду?
<--<--<--Нажми на весы слева <---<---<---
Fantom.as вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск простых чисел из диапазона dex92 Помощь студентам 2 21.05.2010 09:40
Алгоритм нахождения простых чисел ardor Помощь студентам 1 20.11.2009 00:00
Помогите с выводом простых чисел на Pascal nec117 Помощь студентам 2 19.09.2009 18:49
Нахождение простых чисел. Lunex.08 Общие вопросы C/C++ 7 10.04.2009 17:01
Вывод простых чисел. MAKEDON Помощь студентам 1 10.03.2009 16:55