Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/47: Рейтинг темы: голосов - 47, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 29

Найти количество чисел в интервале от 1 до N, взаимно простых с N

23.11.2015, 18:19. Показов 9162. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано число N. Найти количество чисел в интервале от 1 до N,взаимно простых с N.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2015, 18:19
Ответы с готовыми решениями:

Найти количество натуральных чисел, взаимно простых с данным
Найти количество натуральных чисел\leq 770 и взаимно простых с 770? Разложить два числа на множители и найти общий множитель? Спасибо.

Найти количество простых чисел в интервале
Добрый день! Помогите решить задачку на хаскеле. Найти кол-во простых чисел в интервале. Спасибо!

Найти количество простых чисел в заданном интервале
По числу n найти количество простых чисел p из интервала n < p < 2n. Нужен быстрый способ.

11
0 / 0 / 1
Регистрация: 23.11.2015
Сообщений: 4
23.11.2015, 19:05
Лучший ответ Сообщение было отмечено Romanchito как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h>
using namespace std;
int gcd(int x, int y)
{
    return y ? gcd(y, x%y) : x;
}
int main()
{
    setlocale(LC_ALL, "");
    int a=0, n;
    cout << "Введите число N = ";
    cin >> n;
    for (int k = 0; k < n; k++)
        if (gcd(k, n) == 1)
            a = a + 1;
    cout << "Взаимно простых чисел с числом " << n << ", " << a;
    _getch();
    return 0;
}
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 29
26.11.2015, 20:37  [ТС]
Ваша программа не правильна , так как , если вводить 6 , например , то ответ выводит 2 , что не правильно , так как у 6рки лишь одно взаимное число в промежутке от 1 до 6 , пятерка.

Добавлено через 1 минуту
У меня также выводила , в других вариантах , но чтоб она отбрасывала еще и числа имеющие общий делитель , я не знаю как написать(
0
0 / 0 / 1
Регистрация: 23.11.2015
Сообщений: 4
26.11.2015, 22:47
Программа почти правильная, она считает 1 взаимно простым числом с 6, поэтому ответ 2.
Если Вы хотите исключить 1, то как вариант добавить в цикл такую запись:
C++
1
2
3
4
5
6
7
    for (int k = 0; k < n; k++)
    {
        if (k = 1)
            a = 0;
        else (gcd(k, n) == 1)
            a = a + 1;
    }
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
26.11.2015, 22:54
Цитата Сообщение от Zefirka Посмотреть сообщение
добавить в цикл такую запись:
или не париться и начинать цикл с 2.

Добавлено через 38 секунд
Цитата Сообщение от Zefirka Посмотреть сообщение
C++
1
if (k = 1)
это к бесконечному циклу приведет.
1
0 / 0 / 1
Регистрация: 23.11.2015
Сообщений: 4
26.11.2015, 23:47
Ну или оператору a=-1, я думал над этим, но всё же правильнее на мой взгляд исключить 1.

Добавлено через 12 минут
Как то так:
C++
1
2
3
4
5
6
7
    for (int k = 0; k < n; k++)
    {
        if (gcd(k, n) == 1 & k!=1)
            a = a + 1;
        else
            continue;
    }
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.11.2015, 00:25
Если совсем не думать об эффективности, то предложенный код (с соответствующими поправками) должен работать. Но если хоть чуть-чуть о ней задуматься, то код никуда не годиться. Можно пойти таким путем.
Найти все простые делители N и проверять делимость только на них. Но для этого нужен массив (вектор). Правда, не очень большой. Не больше, чем log2N, при чем это очень грубая оценка.
Можно воспользоваться еще кой-какими фактами из элементарной (и не очень) теории чисел. В конце концов тут требуется вычислить функцию Эйлера, уж наверное за 300 лет какие-то наработки появились!
https://ru.wikipedia.org/wiki/... 1%80%D0%B0
Кстати, в классической формулировке единица входит.
2
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 29
29.11.2015, 21:41  [ТС]
Большое спасибо , программа работает , только можете поподробнее объяснить про функцию gcd , что она делает , как ее можно представить в алгебраическом виде , и что делает данное выражение в программе
int gcd(int x, int y)
{
return y ? gcd(y, x%y) : x;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
29.11.2015, 23:35
Цитата Сообщение от Romanchito Посмотреть сообщение
про функцию gcd , что она делает
Находит наибольший общий делитель чисел x, y
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 29
01.12.2015, 20:43  [ТС]
А можете объяснить почему тут пишется вопрос и двоеточие перед х ?Для чего они?
y ? gcd(y, x%y) : x;
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
01.12.2015, 21:12
Цитата Сообщение от Romanchito Посмотреть сообщение
Для чего они?
Тернарный оператор. Прочитай.
Эквивалентно
C++
1
2
if (y) return gcd(y, x%y);
else return x;
Кто понял и привык, тем легче так.
1
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 29
02.12.2015, 18:03  [ТС]
Спасибо , что помогли , прям огромное спасибо)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2015, 18:03
Помогаю со студенческими работами здесь

Найти количество почти простых чисел в заданном интервале натуральных чисел.
Натуральное число называется почти простым, если оно не простое и имеет только один простой делитель. Найти количество почти простых чисел...

Количество чисел взаимно простых с p*q
Нужно доказать, то есть найти кол-во взаимно простых чисел с p*q, если фи(p)=p-1( функция эйлера для простых чисел), найти фи(p*q)-?

Количество шестизначных чисел, взаимно простых с числом 70
Всем привет! Помогите с задачкой, почему код не работает должным образом, если по логике он правильный? Или в чем моя ошибка? Два...

Количество 6-значных чисел, взаимно простых с числом 70
Моя вторая программа на Python, и не работает) Ничего не выводит. Пожалуйста, помогите исправить программу или переписать полностью. ...

Нахождение простых, взаимно-простых и парно-простых чисел из указанного диапазона
Нужна помощь мне нужно создать программу для нахождение простых,взаимнопростых и парно простых чисел из указанного диапазона. у меня...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru