Ruforum.net Вход · Регистрация · Правила · Поиск · Помощь
Календарь · Участники

Вы не авторизованы на форуме. Введите логин и пароль или зарегистрируйтесь    

 
Ответить · Новая тема · Новое голосование

Каскадный · [ Стандартный ] · Линейный

Простые числа

Подписка на тему | Сообщить другу | Версия для печати
NickG
Начинающий
Group Icon

Сообщений: 39
Статус: вне форума

C++
Как вычислить простые числа от числа а до числа б?
21.12.2004 · 21:37
Агент
Циничный Мерзавец
Group Icon

Сообщений: 2036
Статус: вне форума

Так же как и вычислять все простые числа, только i==a в начале приписать :)
21.12.2004 · 22:40
SleepWalker
юный MOSIXатор
Group Icon

Сообщений: 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
Начинающий
Group Icon

Сообщений: 39
Статус: вне форума

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

Сообщений: 1165
Статус: вне форума

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

Сообщений: 2036
Статус: вне форума

могу на басик только :)
22.12.2004 · 18:44
Seymour
Втянувшийся
Group Icon

Сообщений: 333
Статус: на форуме

Агент
А я с басика на паскаль. :)
22.12.2004 · 23:10
SleepWalker
юный MOSIXатор
Group Icon

Сообщений: 1165
Статус: вне форума

Агент
Seymour
ну вот и обьясните ч-ку :)
23.12.2004 · 07:33
NickG
Начинающий
Group Icon

Сообщений: 39
Статус: вне форума

Хоть обьясните как мне найти простые числа от 3-х до 10000?
23.12.2004 · 09:01
SleepWalker
юный MOSIXатор
Group Icon

Сообщений: 1165
Статус: вне форума

ты сначала подучай что такое простое число и оттуда пляши .
23.12.2004 · 10:10
Агент
Циничный Мерзавец
Group Icon

Сообщений: 2036
Статус: вне форума

Просто число - число у которого нету делителя. Значит в цикле береём число i которое проверяем на простость, и число j равное целому корню числа i, и начинаем делить i на j. в цикле стоит j--. Если получаем в результате целое число - значит число не простое и берём следующий i.

самый просто метод перебора.
23.12.2004 · 10:49
NickG
Начинающий
Group Icon

Сообщений: 39
Статус: вне форума

Агент
Спасибо. Щас попробую реализовать.
24.12.2004 · 09:42
Yasnovidyashii
Perpetuum Mobile
Group Icon

Сообщений: 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
Начинающий
Group Icon

Сообщений: 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
Group Icon

Сообщений: 401
Статус: вне форума

твоя программа некорректна. для того, чтобы проверить - просто ли число, нужно разделить его последовательно, на все числа большие либо равные 2 и меньшие его значения. если для всех их этих делений остаток не равен нулю (т.е. у данного чилса только 2 делителя - 1 и оно само), то оно простое. поэтому посмотри в мою прогу.
там я в цикле делю i на j (в твоем случае a на с) и проверяю остаток от деления на равенство с нулем. Если хоть раз остаток будет равен нулю (т.е. число разделиться), то оно уже не простое - следовательно я переменной к присваиваю 1. (если к==0, то число простое, если ==1 то нет.). после того, как второй цикл завершится (i будет разделено на все возможные числа), то мы проверяем значение к. если к так и осталось равным 0 (деление на все числа давало ненулевой остаток), то число простое, в противном случае - непростое.
и если к=0 то оператором cout я его вывожу на экран. ты же делай, что тебе с ним необходимо делать.

NickG
прошу прощения, если непонятно написал... я ща пьяный просто
24.12.2004 · 21:05
Агент
Циничный Мерзавец
Group Icon

Сообщений: 2036
Статус: вне форума

Yasnovidyashii
Верхний предел проверки это Int(sqr(a))
25.12.2004 · 03:31
Yasnovidyashii
Perpetuum Mobile
Group Icon

Сообщений: 401
Статус: вне форума

Агент
*Подумав* Согласен.
27.12.2004 · 12:58
Тему просматривают:
Ответить · Опции темы · Новая тема

 



RuForum Help