Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stdlib.h>
- using namespace std;
- long long getEiler(long long n) {
- long long x;
- x = n;
- for (int i = 2; i*i <= n; i++)
- {
- if (n % i == 0)
- {
- while (n % i == 0) n /= i;
- x -= x / i;
- }
- // Подсчет функции Эйлера
- }
- if (n > 1)
- {
- x -= x / n;
- return x;
- }
- // Возвращение переменной х
- }
- bool Prod()
- {
- cout << "Продолжить? Y/N" << endl;
- char yn;
- cin >> yn;
- cin.clear();
- if (yn == 'Y' && cin.get() == '\n') return true;
- else if (yn == 'N' && cin.get() == '\n') return false;
- else
- {
- while (cin.get() != '\n');
- cout << "Ошибка ввода символа" << endl;
- Prod();
- }
- //функция, позволяющая пользователю продолжить работу
- }
- int main()
- {
- setlocale(LC_ALL, "ru");
- bool t = true;
- while (t)
- {
- long long n;
- bool k = true;
- while (k)
- {
- cout << "Введите натуральное число n чтобы узнать значение функции Эйлера для этого числа" << endl;
- cout << "n: ";
- cin >> n;
- cin.clear();
- if (cin.get() != '\n' || n < 0)
- {
- cout << "Ошибка ввода числа" << endl;
- while (cin.get() != '\n') k = true;
- }
- else
- {
- k = false;
- }
- // Часть кода, не позволяющая ввести неверное число и выкидывающая ошибку
- }
- long long x = getEiler(n); // вызов и подсчет функции Эйлера
- cout << "Значение функции Эйлера равно: " << x << endl;
- t = Prod();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement