2 / 2 / 0
Регистрация: 25.10.2018
Сообщений: 289
1

Подпрограмма: Составить программу разложения заданного числа на простые множители...

25.10.2018, 19:42. Показов 3040. Ответов 3
Метки нет (Все метки)

Дано натуральное число n ≥ 2. Составить программу разложения этого числа на простые множители:
•простой множитель р должен быть выведен k раз, где k – натуральное число, такое, что n делится на рk и не делится на рk+1;
•каждый простой множитель должен быть выведен ровно один раз.

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
#include "stdafx.h" 
#include <clocale> 
#include <conio.h> 
#include <cmath> 
 
int main() 
{ 
setlocale(LC_CTYPE, " Russian "); 
int j = 0, n, k, p=1, i; 
printf("Введите натуральное число n, где n>=2: "); 
scanf_s("%d", &n); 
k = n; 
printf("Простые множители выведены k раз: "); 
for (p=2; p<=n; p++) 
{ 
while (k%p == 0) 
{ 
printf(" %d", p); 
k = k / p; 
} 
} 
 
printf("\nПростые множители выведены 1 раз: "); 
for (i = 2; i <= n; i++) 
{ 
if (n%i == 0) 
{ 
printf(" %d", i); 
n = n / i; 
} 
else { i = i + 2; } 
 
} 
 
_getch(); 
return 0; 
}
Исправьте, пожалуйста
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2018, 19:42
Ответы с готовыми решениями:

Написать программу проверки числа на простоту и в противном случае разложения его на простые множители
1) Рандомное задание числа 15 значное 2) Проверка на простоту и если не простое 3) Разложение на...

Составить программу разложения числа на простые множители
Дано натуральное число n&gt;=2. Составить программу разложения этого числа на простые...

Составить программу разложения числа на простые множители
Составить программу разложения числа на простые множители.

Составить программу разложения числа на простые множители
Задача 3.написать комментарии к программным строкам и выполнить дополнительное задание, если оно...

3
1482 / 946 / 811
Регистрация: 30.04.2016
Сообщений: 3,306
25.10.2018, 20:30 2
wwmax, здравствуйте! Вот программа, которая раскладывает любое число, которое можно представить в виде произведения простых чисел на эти числа, без повторов. Надеюсь, она вам поможет.

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
#include <iostream> 
#include <cmath> 
#include <set>
 
    using namespace std;
 
int main() {
    int n, k, tmp, p = 1;
    set<int> s;
    cout << "Enter a number:\n";
    cout << "n = ";
    cin >> n;
    tmp = n;
    k = 2;
    while (k <= sqrt(n)) {
        again: if (n % k == 0) {
            n /= k;
            if (s.find(k) == s.end()) {
                s.insert(k);
                p *= k;
                goto again;
            }
        } else k++;
    }
    s.insert(n);
    p *= n;
    cout << "Output of the program:\n";
    if (tmp == p) {
        for (auto it = s.begin(); it != s.end(); ++it) {
            cout << *it << " ";
        }
    } else {
        cout << "This number can't devided into primes without repeats!\n";
    }
    system("pause");
    return 0;
}
0
426 / 257 / 169
Регистрация: 06.06.2016
Сообщений: 509
25.10.2018, 22:45 3
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
#include <iostream>
 
 void prime_factorization( int n, bool repeat = true )
 {
        for ( int d = 2; d <= n; ++d )
       {
         int k = 0;
            while ( !( n % d ) )
            {
              n /= d;
              ++k;
            }
            if ( repeat )
            {
                while ( k-- )
                   std::cout << d << " ";
            }
            else
            {
                if ( k )
                    std::cout << d << " ";
            }
       }
   std::cout << "\n";
 }
 
 int main()
 {
   int n = 968;
   std::cout << n << " with repeats: \t";
   prime_factorization( n );
   std::cout << n << " without repeats: \t";
   prime_factorization( n, false );
   //std::cin.get();
   return 0;
 }
1
1482 / 946 / 811
Регистрация: 30.04.2016
Сообщений: 3,306
25.10.2018, 22:53 4
wwmax, вот просто на простые множители, но с повторами. Это справедливо для любого числа, то есть любое число можно разложить на простые множители:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
 
    using namespace std;
 
int main() {
    int n, k;
    cout << "Enter a number:\n";
    cout << "n = ";
    cin >> n;
    k = 2;
    cout << "Output of the program:\n";
    while (k <= sqrt(n)) {
        if (n % k == 0) {
            n /= k;
            cout << k << "*";
        } else k++;
    }
    cout << n;
    system("pause");
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2018, 22:53

[Small Basic] Составить программу разложения натурального числа n на простые множители
Помогите пожалуйста! Составить программу разложения натурального числа n на простые...

Составить программу для разложения данного натурального числа на простые множители
Помогите решить с помощью процедур, пожалуйста Составить программу для разложения данного...

Написать программу проверки числа на простоту и в противном случае разложения его на простые множители
1) Рандомное задание числа 15 значное 2) Проверка на простоту и если не простое 3) Разложение...

Функция разложения натурального числа А на простые множители
Подскажите,пожалуйста, как решается эта задача. Язык Си учу всего 2 недели,поэтому плохо в нем...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.