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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Deterokus, 5 фев 2012.

  1. Deterokus

    Deterokus Гость

    Доброго дня всем!
    Перед Вами - 2 программы - 1 шифрует текст методом гаммирования, вторая - генератор простых чисел.
    Если не трудно - помогите дать комментарий к некоторым блокам и переменным ))
    1 архив - необходимо объяснить, что собой представляет переменная l и для чего она используется.
    2 архив - необходимо объяснить блок:

    Код (C++):
    if (p!=q)
    {
    k=sqrt(p);
    kk=k;
    for (b=2;b<=kk;b++)
    {
    if (p%b==0)
    {
    i++;
    break;
    А конкретнее - для чего производится операция извлечения квадратного корня в алгоритме нахождения простых чисел(решето Эратосфена)

    Посмотреть вложение 1.rar
    Посмотреть вложение 2.rar

    Добавлено: Остальные копии темы удалите, пожалуйста
     
  2. Deterokus

    Deterokus Гость

    Уточняю вопрос по 2 программе - Почему используется именно извлечение квадратного корня, а не что-то другое?
     
  3. qqwertty

    qqwertty Гость

    Если я правильно вопрос понял, чтобы узнать простое ли число можно в цикле делить на все подряд от 2-ки до квадратного корня из этого числа, потому что дальше уже не имеет смысла.
    Например, число 26 делится максимум на 5 ((int)sqrt(26) = 5), на 6 и дальше, даже если оно разделится, то точно будет делиться на какое либо число до 5-ки. 26 = 2*13.

    Надеюсь понятно объяснил)
     
  4. Deterokus

    Deterokus Гость

    А почему дальне не имеет смысла? Как это доказывается? Если честно, пример не очень понял, но нашёл нечто полезное в википедии.

    Для нахождения всех простых чисел не больше заданного числа 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.

    Это именно обоснование или можно сказать как-то по-другому?
     
  5. qqwertty

    qqwertty Гость

    Как доказывается я не знаю. Попробую проще. У составного числа(не простого) минимум 2 простых множетеля, так вот чтобы найти хотябы 1, достаточно пройти до корня из числа, потому что максимумальный возможный (простой!!!) множетель равен корню из числа, пример 25. Sqrt(25) = 5; 121 (sqrt(121) = 11); 144 (sqrt(144) = 12 но до 12 алгоритм и не дойдет) Множители за корнем, если будут даже простыми, то найдется еще 1 множитель который будет меньше корня из числа, арифметика ёмоё) Еще пример, если число 401 не разделится ни на одно число до 20, то на 21 оно точно не разделится, потому что 401/21 = должно быть меньше 20, т.к 21х20=420
     
  6. Deterokus

    Deterokus Гость

    спасибо большое!
     
Загрузка...
Похожие Темы - Прокомментируйте Пожалуйста Код
  1. kirkl
    Ответов:
    0
    Просмотров:
    1.011
  2. DangelZM
    Ответов:
    1
    Просмотров:
    2.360
  3. limbra
    Ответов:
    3
    Просмотров:
    68
  4. uxbmw3w
    Ответов:
    0
    Просмотров:
    90
  5. Alexsandraaa
    Ответов:
    7
    Просмотров:
    186

Поделиться этой страницей