Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kzht91
0 / 0 / 0
Регистрация: 02.07.2010
Сообщений: 19
#1

Простые числа - C++

20.08.2010, 17:19. Просмотров 460. Ответов 5
Метки нет (Все метки)

У меня 2 задачи. Объясните, пожалуйста, просто алгоритмы.
1) Найти n-ное простое число (например n=10^5)
2) Разложение составного числа на простые
Пытаюсь написать на c++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2010, 17:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простые числа (C++):

Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа - C++
Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа. Простые числа это когда они делятся только...

Задача про простые числа. Выпишите все простые числа, находящиеся в интервале между а и б - C++
#include <stdio.h> #include <iostream> #include <conio.h> #include <math.h> using std::cout; using std::cin; using...

Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p - C++
Даны натуральные числа p и q. Получить все делители числа q , взаимно простые к p. помогите сделать на с++

Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p. - C++
Даны натуральные числа p и q. Получить все делители числа q , взаимно простые к p.

Найти числа-близнецы: простые числа разность между которыми равна 2 - C++
Дано натуральное число n. Среди чисел n, n + 1, …, 2n найти все числа-близнецы: простые числа, разность между которыми равна 2.

Даны натуральные числа a,b(a<= Ь). Получить все простые числа р, удовлетворяющие неравенствам a<= р<= b. - C++
Даны натуральные числа a,b(a&lt;= Ь). Получить все простые числа р, удовлетворяющие неравенствам a&lt;= р&lt;= b. Решите на С++. Буду очень...

5
iama
1251 / 976 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
20.08.2010, 17:25 #2
есть, только на делфи, перевести нетрудно.
Решение на Delphi
разложить на составные:
Delphi
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
procedure TForm1.bbDelClick(Sender: TObject);
var
i,c, us : cardinal;
begin
us := seDel.Value;
if us >= 500000000 then
  if Application.MessageBox('Для вычислений потребуется достаточно много времени.' + #13 +'Вы согласны продолжить?','High Speed Calculations',MB_ICONEXCLAMATION + MB_YESNO) = mrNo then exit;
Screen.Cursor := crHourglass;
Application.ProcessMessages;
c := 0;
lbDel.Clear;
for i := 1 to us do begin
  if i > us div 2 then begin
    c := c + 1;
    lbDel.Items.Add(IntToStr(c) + ' делитель = ' + IntToStr(us));
    break;
  end;
  if us mod i = 0 then begin
    c := c + 1;
    lbDel.Items.Add(IntToStr(c) + ' делитель = ' + IntToStr(i));
    if us >= 500000000 then Application.ProcessMessages;
  end;
end;
Screen.Cursor := crDefault;
end;
найти н простых чисел:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.bbProstClick(Sender: TObject);
var
pv, pd, dl : cardinal;
begin
if (seMax.Value - seLow.Value) > 10000 then
  if Application.MessageBox('Для вычислений потребуется достаточно много времени.' + #13 +'Вы согласны продолжить?','High Speed Calculations',MB_ICONEXCLAMATION + MB_YESNO) = mrNo then exit;
lbProst.Clear;
dl := 0;
for pv := seLow.Value + 1 to seMax.Value do begin
  for pd := 1 to pv do begin
    if Int(pv / pd) = pv / pd then dl := dl + 1;
  Application.ProcessMessages;
  end;
  if dl = 2 then lbProst.Items.Add('Простое число '+ IntToStr(pv));
  dl := 0;
end;
end;
0
kzht91
0 / 0 / 0
Регистрация: 02.07.2010
Сообщений: 19
20.08.2010, 17:29  [ТС] #3
Если честно, почти ничего не понял(((
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
20.08.2010, 17:38 #4
Пользуемся поиском
0
Vladimir616
112 / 112 / 3
Регистрация: 05.07.2009
Сообщений: 224
20.08.2010, 17:38 #5
kzht91,

№2


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
        int n = 0;
        cin >> n;
        for(int i = 2; i <= n/2;)
                if(n % i == 0)
                {
                        cout << i << endl;
                        n /= i;
                }
                else
                        i++;
        cout << n << endl;
        return 0;
}
1
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,988
20.08.2010, 17:40 #6
1)эм .. простые числа 1,2,3
гонишь цикл от 4 до тех пор пока не захочешь закончить, каждое число смотришь делится ли оно на все предыдущие простые числа без остатка. То есть 4 делится на 2, на наго забиваеем.Смотрим 5 на два не делится, делим на 3 - не делится, значит добавляем 5 в список простых чисел.Сейчас в списке простых чисел (2,3,5).Проверям дальше увеличивая список
1
20.08.2010, 17:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2010, 17:40
Привет! Вот еще темы с ответами:

Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. - C++
Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. Решите на С++. Заранее спасибо!

Даны целые числа р и q. Получить все делители числа q, взаимно простые с р - C++
Получить все делители числа q, взаимно простые с р.

Найти простые числа с суммой цифр меньше заданного числа - C++
нужно написать прогу, можно использовать только циклы. Если можно, с объяснениями. Условие: Найти n первых простых чисел, сумма цифр у...

Дано натуральное число. Вывести на экран все простые числа до заданного числа. - C++
Дано натуральное число. Вывести на экран все простые числа до заданного числа.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.