Форум программистов, компьютерный форум CyberForum.ru

Прокомментируйте, пожалуйста, код программы. - C++

Восстановить пароль Регистрация
 
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
05.02.2012, 11:53     Прокомментируйте, пожалуйста, код программы. #1
Доброго дня всем!
Перед Вами - 2 программы - 1 шифрует текст методом гаммирования, вторая - генератор простых чисел.
Если не трудно - помогите дать комментарий к некоторым блокам и переменным ))
1 архив - необходимо объяснить, что собой представляет переменная l и для чего она используется.
2 архив - необходимо объяснить блок:

C++
1
2
3
4
5
6
7
8
9
10
if (p!=q)
{
k=sqrt(p);
kk=k;
for (b=2;b<=kk;b++)
{
if (p%b==0)
{
i++;
break;
А конкретнее - для чего производится операция извлечения квадратного корня в алгоритме нахождения простых чисел(решето Эратосфена)
Вложения
Тип файла: rar 1.rar (348.4 Кб, 5 просмотров)
Тип файла: rar 2.rar (366.5 Кб, 6 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2012, 11:53     Прокомментируйте, пожалуйста, код программы.
Посмотрите здесь:

прокомментируйте пожалуйста код C++
C++ Прокомментируйте пожалуйста код
C++ Написал тетрис. Прокомментируйте код пожалуйста )
Прокомментируйте пожалуйста C++
прокомментируйте код пожалуйста C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
06.02.2012, 12:46  [ТС]     Прокомментируйте, пожалуйста, код программы. #2
Уточняю вопрос по 2 программе - Почему используется именно извлечение квадратного корня, а не что-то другое?
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
06.02.2012, 13:18     Прокомментируйте, пожалуйста, код программы. #3
код выложите сюда весь
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
06.02.2012, 15:39  [ТС]     Прокомментируйте, пожалуйста, код программы. #4
Подсказка - сказали, что обычно перебираются числа как раз до квадратного корня.
C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <vcl.h>
#include <stdio.h>
#include <math.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const n=30;
int p,b,gen,i,kk,q,e,c;
float k;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
gen=0;
while (! gen)
{
i=0;
randomize();
p=128+random(127);
if (p!=q)
{
k=sqrt(p);
kk=k;
for (b=2;b<=kk;b++)
{
if (p%b==0)
{
i++;
break;
}
}
if (i==0)
{
Edit1->Text=p;
gen=1;
}
}
}
}
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
08.02.2012, 11:15  [ТС]     Прокомментируйте, пожалуйста, код программы. #5
Ребят, неужели никто не в курсе?
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
08.02.2012, 11:26     Прокомментируйте, пожалуйста, код программы. #6
> Почему используется именно извлечение квадратного корня, а не что-то другое?

> решето Эратосфена

потому что перебирать вариантов больше, чем значение корня длины, не имеет смысла.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2012, 16:59     Прокомментируйте, пожалуйста, код программы.
Еще ссылки по теме:

C++ Прокомментируйте пожалуйста код (класс String)
C++ Прокомментируйте код, пожалуйста
Прокомментируйте, пожалуйста, код. Список - очередь C++

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

Или воспользуйтесь поиском по форуму:
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
08.02.2012, 16:59  [ТС]     Прокомментируйте, пожалуйста, код программы. #7
Цитата Сообщение от villu Посмотреть сообщение

потому что перебирать вариантов больше, чем значение корня длины, не имеет смысла.
А чем именно это обосновывается? Что особенного именно в значении квадратного корня? Ведь не просто так взяли именно эту операцию, можно было ведь взять и корень 3 степени или логарифм.

Добавлено через 3 минуты
Нашёл ответ на вопрос.
Для нахождения всех простых чисел не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:
1.Выписать подряд все целые числа от двух до n (2, 3, 4, …, n).
2.Пусть переменная p изначально равна двум — первому простому числу.
3.Считая от p шагами по p, зачеркнуть в списке все числа от 2p до n кратные p (то есть числа 2p, 3p, 4p, …)
4.Найти первое не зачеркнутое число, большее чем p, и присвоить значению переменной p это число.
5.Повторять шаги 3 и 4 до тех пор, пока p не станет больше, чем n
Теперь все не зачеркнутые числа в списке — простые.
На практике, алгоритм можно несколько улучшить следующим образом. На шаге № 3, числа можно зачеркивать, начиная сразу с числа p^2, потому что все составные числа меньше его уже будут зачеркнуты к этому времени. И, соответственно, останавливать алгоритм можно, когда p^2 станет больше, чем n

Добавлено через 4 часа 45 минут
Всё так, или есть другие мнения?
Yandex
Объявления
08.02.2012, 16:59     Прокомментируйте, пожалуйста, код программы.
Ответ Создать тему
Опции темы

Текущее время: 19:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru