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

Вычисление функции Эйлера

14.10.2022, 23:11. Показов 448. Ответов 0

Author24 — интернет-сервис помощи студентам
Всем здравствуйте, написал программу которая параллельно вычисляет функцию Эйлера, но дело в том что она работает исправно только для малых n и я не понимаю в чём дело.

Добавлено через 50 минут
В первый раз неправильно записал, исправил.
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <vector>
 
using namespace std;
long long n, a, b, d;
long double ed;
vector<long long> muls;
vector<long long> emuls;
 
double phi(long double a, long double b, long double c, long double d)
{
    ed = (c / d);
    return a * b * ed;
}
 
int gcd(long long a, long long b)
{
    long nod = 1L;
 
    if (a > b) {
        long tmp = a;
        a = b;
        b = tmp;
    }
 
    while (a > 1L && b > 1L) {
        for (long i = 2; i <= a; i++) {
            if (a % i == 0 && b % i == 0) {
                nod *= i;
                a /= i;
                b /= i;
                break;
            }
            if (a % i == 0) {
                a /= i;
                break;
            }
            if (b % i == 0) {
                b /= i;
                break;
            }
        }
    }
    return nod;
}
 
int main()
{
    muls = vector<long long>(2);
    emuls = vector<long long>(2);
    n = (2LL * 2 * 2 * 2) * (3 * 3 * 3) * (11 * 11 * 11 * 11 * 11) * (13 * 13) * (29 * 29) * 37;
    a = (2LL * 2) * (3 * 3) * (11 * 11) * 13 * 29;
    b = n / a;
    d = gcd(a, b);
    cout << "n = " << n << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "d = " << d << endl;
 
    if (a * b == n)
    {
        muls.push_back(a);
        muls.push_back(b);
        muls.push_back(d);
        emuls.push_back(a);
        emuls.push_back(b);
        emuls.push_back(d);
    }
    else
        cout << "Error";
    
#pragma omp parallel
    {
        int i;
#pragma omp for private(i)
        for (i = 2; i <= 4; i++)
        {
            for (int j = 2; j * j <= muls[i]; j++)
            {
                if (muls[i] % j == 0)
                {
                    while (muls[i] % j == 0)
                    {
#pragma omp critical
                        {
                        muls[i] /= j;
                        emuls[i] -= emuls[i] / i;
                        }
                    }
                }
            }
            if (n > 1)
            {
                emuls[i] -= emuls[i] / muls[i];
            }
        
            cout << emuls[i] << '\n';
        }
 
        cout << "phi = " << phi(emuls[2], emuls[3], d, emuls[4]) << endl;
 
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2022, 23:11
Ответы с готовыми решениями:

Вычисление функции Эйлера
Помогите разобраться, как можно реализовать функцию Эйлера на Си. Алгорим такой:...

Вычисление гамма-функции Эйлера
Помогите составить рекуррентное соотношение и вычислить Г(2,5) с погрешностью eps=10^-7 ...

Есть ли в матлабе вычисление функции Эйлера?
Не могу найти в гоогле выдает только решение ДУ, или в матлабе нету такой функции??

Вычисление с использованием интегралов Эйлера
Вычислить интеграл с помощью интегралов Эйлера: \int_{0}^{\infty...

Вычисление числа Эйлера с произвольной точностью
Дело такое: Нужно число Эйлера ( е=2,718281... ) Вывести на экран с точностью до 960 знака после...

0
14.10.2022, 23:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2022, 23:11
Помогаю со студенческими работами здесь

Найти решения задачи Коши методами Эйлера, уточненного метода Эйлера и Эйлера-Коши. Выполнить эмпирический анализ
Здравствуйте, надеюсь, помогут мне, такому глупому. Делаю задания по данному предмету. Задание...

Вычисление функции отключено, поскольку истекло время, выделенное на вычисление предыдущей функции
Подскажите пожалуйста, загружаю файл на ftp: WebClient myWebClient = new WebClient(); ...

Приближенное вычисление дифференциальных уравнений методом Эйлера
приближенное вычисление дифференциальных уравнений методом Эйлера

Приближенное вычисление дифференциальных уравнений методом Эйлера
приближенное вычисление дифференциальных уравнений методом Эйлера

Использование функции Эйлера
Маша недавно прочитала в книге о новом способе гадания. Способ заключается в следующем: надо...

Реализация Функции Эйлера
Доброго времени суток,уважаемые форумчане! Помогите пожалуйста мне с такой проблемой (да,я видел...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru