|
Каскадный ·
[ Стандартный ] ·
Линейный
Простые числа
|
|
Подписка на тему | Сообщить другу | Версия для печати |
NickG
Начинающий

Сообщений: 39
Статус: вне форума
|
|
C++ Как вычислить простые числа от числа а до числа б? |
|
|
|
 21.12.2004 · 21:37
|
|
|
Агент
Циничный Мерзавец

Сообщений: 2036
Статус: вне форума
|
|
Так же как и вычислять все простые числа, только i==a в начале приписать :) |
|
|
|
 21.12.2004 · 22:40
|
|
|
SleepWalker
юный MOSIXатор

Сообщений: 1165
Статус: вне форума
|
CODE :
enum ecode{E_FAILURE,E_SUCCESS}; unsigned int is_primary(unsigned int); int main(){ for (i=0x00;i<n;i++) if(is_primary(i)==ESUCCESS) printf("%i ",i); return E_SUCCESS; } unsigned int is_primary(unsigned int n){ for(unsigned int i=n>>0x02;i>=0x02;i++) if(n%0x02==0x00) return E_FAILURE; return E_SUCCESS; }
| |
|
|
|
 22.12.2004 · 02:12
|
|
|
NickG
Начинающий

Сообщений: 39
Статус: вне форума
|
|
SleepWalker Извини, но я только начинаю изучать C++. Мне бы по проще? |
|
|
|
 22.12.2004 · 16:33
|
|
|
SleepWalker
юный MOSIXатор

Сообщений: 1165
Статус: вне форума
|
|
народ , тут есть переводчик с С на паскаль ? :spy: |
|
|
|
 22.12.2004 · 18:28
|
|
|
Агент
Циничный Мерзавец

Сообщений: 2036
Статус: вне форума
|
|
 22.12.2004 · 18:44
|
|
|
Seymour
Втянувшийся

Сообщений: 333
Статус: на форуме
|
|
Агент А я с басика на паскаль. :) |
|
|
|
 22.12.2004 · 23:10
|
|
|
SleepWalker
юный MOSIXатор

Сообщений: 1165
Статус: вне форума
|
|
Агент Seymour ну вот и обьясните ч-ку :) |
|
|
|
 23.12.2004 · 07:33
|
|
|
NickG
Начинающий

Сообщений: 39
Статус: вне форума
|
|
Хоть обьясните как мне найти простые числа от 3-х до 10000? |
|
|
|
 23.12.2004 · 09:01
|
|
|
SleepWalker
юный MOSIXатор

Сообщений: 1165
Статус: вне форума
|
|
ты сначала подучай что такое простое число и оттуда пляши . |
|
|
|
 23.12.2004 · 10:10
|
|
|
Агент
Циничный Мерзавец

Сообщений: 2036
Статус: вне форума
|
|
Просто число - число у которого нету делителя. Значит в цикле береём число i которое проверяем на простость, и число j равное целому корню числа i, и начинаем делить i на j. в цикле стоит j--. Если получаем в результате целое число - значит число не простое и берём следующий i.
самый просто метод перебора. |
|
|
|
 23.12.2004 · 10:49
|
|
|
NickG
Начинающий

Сообщений: 39
Статус: вне форума
|
|
Агент Спасибо. Щас попробую реализовать. |
|
|
|
 24.12.2004 · 09:42
|
|
|
Yasnovidyashii
Perpetuum Mobile

Сообщений: 401
Статус: вне форума
|
|
Агент Чаво-чаво? А слабо было на языке каком-нить реализовать? Или хотя бы блок-схеме?
#include "iostream.h" void main() { char k; for (int i=3;i<10001;i++) { k=0; for (int j=2;j<i;j++) if (i%j==0) k=1; if (k==0) cout<<i<<" "; } } |
|
|
|
 24.12.2004 · 15:02
|
|
|
NickG
Начинающий

Сообщений: 39
Статус: вне форума
|
|
У меня получилась вот такая программа: #include <iostream.h> void main() { int a, c=2; for (a=3; a<10000; a++) { for (;c>2, c<a; c++) { if (a%c==0) \\Не пойму что с этого этапа делать? { }
} } } Yasnovidyashii Я хочу сам понять. Пожалуйста обясни, что мне делат дальше. |
|
|
|
 24.12.2004 · 15:36
|
|
|
Yasnovidyashii
Perpetuum Mobile

Сообщений: 401
Статус: вне форума
|
|
твоя программа некорректна. для того, чтобы проверить - просто ли число, нужно разделить его последовательно, на все числа большие либо равные 2 и меньшие его значения. если для всех их этих делений остаток не равен нулю (т.е. у данного чилса только 2 делителя - 1 и оно само), то оно простое. поэтому посмотри в мою прогу. там я в цикле делю i на j (в твоем случае a на с) и проверяю остаток от деления на равенство с нулем. Если хоть раз остаток будет равен нулю (т.е. число разделиться), то оно уже не простое - следовательно я переменной к присваиваю 1. (если к==0, то число простое, если ==1 то нет.). после того, как второй цикл завершится (i будет разделено на все возможные числа), то мы проверяем значение к. если к так и осталось равным 0 (деление на все числа давало ненулевой остаток), то число простое, в противном случае - непростое. и если к=0 то оператором cout я его вывожу на экран. ты же делай, что тебе с ним необходимо делать.
NickG прошу прощения, если непонятно написал... я ща пьяный просто |
|
|
|
 24.12.2004 · 21:05
|
|
|
Агент
Циничный Мерзавец

Сообщений: 2036
Статус: вне форума
|
|
Yasnovidyashii Верхний предел проверки это Int(sqr(a)) |
|
|
|
 25.12.2004 · 03:31
|
|
|
Yasnovidyashii
Perpetuum Mobile

Сообщений: 401
Статус: вне форума
|
|
Агент *Подумав* Согласен. |
|
|
|
 27.12.2004 · 12:58
|
|
|