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

Разложение числа на простые множители

29.10.2019, 21:44. Показов 6576. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

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

Например
Разложение числа 120 на простые множители:
2^3 x 3 x 5
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2019, 21:44
Ответы с готовыми решениями:

Разложение числа на простые множители
Мир всем. Написал вот такую вот программу для разложения числа на простые множители с...

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

Разложение на простые множители заданного натурального числа
Составить программу, печатающую разложение на прос¬тые множители заданного натурального числа n > 0...

Требуется вычислить разложение натурального числа на простые множители
Простите,что пишу сюда код на си,просто дождаться ответов в разделе "Си" невозможно: Ошибка в...

10
Модератор
2576 / 1673 / 905
Регистрация: 16.10.2013
Сообщений: 4,929
Записей в блоге: 13
30.10.2019, 06:42 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
 
int main(){
    int num, i = 2;
    printf("Enter number: ");
    scanf("%d", &num);
    
    while(i <= num){
        if(num % i == 0){
            printf("%d", i);
            num = num / i;
            if(num > 1)
                printf("*");
        }
        else
            i++;      
    }
    return 0;
}
0
Диссидент
Эксперт C
27691 / 17313 / 3808
Регистрация: 24.12.2010
Сообщений: 38,970
30.10.2019, 10:26 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Factor(int n) // Разложение одного числа на множители (фаторизация)
{ int p;
   for(p=2; p*p <= n; ) {
     int k = 0;
     while(n%p==0) {
       k++;
       n /= p;
     }
      if (k > 0) printf ("%d", p);
      if (k > 1) printf("^%d", k);
      if (n > 1) printf("*");
   }
   if (n> 1) printf("%d", n);
   printf("\n");
}
Добавлено через 43 секунды
long399, проверял?
1
Модератор
Эксперт по электронике
8845 / 6625 / 902
Регистрация: 14.02.2011
Сообщений: 23,322
30.10.2019, 10:45 4
Цитата Сообщение от Canocka Посмотреть сообщение
2^3
в языке Си ^ это не степень, а операция "Исключающая ИЛИ"
следовательно 2^3 будет не 8 как ожидалось, а 1
0
Диссидент
Эксперт C
27691 / 17313 / 3808
Регистрация: 24.12.2010
Сообщений: 38,970
30.10.2019, 10:48 5
ValeryS, речь здесь идет не программе на языке Си, а о текстовой записи разложения.
0
Модератор
Эксперт по электронике
8845 / 6625 / 902
Регистрация: 14.02.2011
Сообщений: 23,322
30.10.2019, 20:55 6
Байт, я как бы догадался
но как говорится "безобразно но единообразно"
странно в тексте программы писать pow а на выводе ^, бэйсиковый сленг
0
Диссидент
Эксперт C
27691 / 17313 / 3808
Регистрация: 24.12.2010
Сообщений: 38,970
30.10.2019, 21:17 7
ValeryS, А как бы ты предложил организовать ввод на консоль, где нет верхних индексов? Я ориентировался на пример в стартовом топике.
Уважаемый long399 просто использовал знак умножения. Но задание-то задано по другому...
И вообще не очень понимаю смысл твоего ворчания
1
Модератор
Эксперт по электронике
8845 / 6625 / 902
Регистрация: 14.02.2011
Сообщений: 23,322
30.10.2019, 22:06 8
Цитата Сообщение от Байт Посмотреть сообщение
Но задание-то задано по другому...
вот я про это задание
например
Цитата Сообщение от Canocka Посмотреть сообщение
Разложение числа 120 на простые множители:
2^3 x 3 x 5
2^3 это простые сомножители??? это два в степени три, согласно приоритетам это 8 что не есть простой сомножитель
сомножители это 2*2*2
Цитата Сообщение от Байт Посмотреть сообщение
И вообще не очень понимаю смысл твоего ворчания
за язык обидно, "кто ясно мыслит тот ясно излагает",а задача задана явно безграмотно
0
Диссидент
Эксперт C
27691 / 17313 / 3808
Регистрация: 24.12.2010
Сообщений: 38,970
30.10.2019, 22:31 9
ValeryS, В математике это записывается как 23*3*5
Предложи эквивалент линейной записи.
Можно, конечно, "по-фортрановски" 2**3*3*5
А чем хрен слаще редьки?
1
Модератор
Эксперт по электронике
8845 / 6625 / 902
Регистрация: 14.02.2011
Сообщений: 23,322
30.10.2019, 22:52 10
Цитата Сообщение от Байт Посмотреть сообщение
В математике это записывается как 23*3*5
итого имеем три сомножителя 23, 3 и 5 сиречь 8 3 5
8 число не простое
Цитата Сообщение от Байт Посмотреть сообщение
Предложи эквивалент линейной записи.
вот как и требуется по условию задачи
Цитата Сообщение от Canocka Посмотреть сообщение
програама выписывает разложение на простые множители каждого числа из данного списка.
2*2*2*3*5
Байт, в общем я тебя услышал, твою позицию понял, надеюсь и ты мою тоже, обидно что ТС это по барабану
закинул задачку и даже не заходит

Добавлено через 5 минут
Байт, кстати по твоей программе
p то нигде не меняется, или я не увидел
попробовал, в уме,n=9 и получил зацикливание
1
Диссидент
Эксперт C
27691 / 17313 / 3808
Регистрация: 24.12.2010
Сообщений: 38,970
30.10.2019, 22:56 11
Цитата Сообщение от ValeryS Посмотреть сообщение
p то нигде не меняется,
Да, моя невнимательность. В конце цикла за строчкой 11 надо p++.
А можно и в заголовке цикла
C
1
for(p=2; p*p <= n; p++) {
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2019, 22:56
Помогаю со студенческими работами здесь

Определить, в какой степени входит число 3 в разложение на простые множители натурального числа п
Определить, в какой степени входит число 3 в разложение на простые множители натурального числа п

Разложение на простые множители
Разложение на простые множители

Разложение на простые множители
Требуется вывести представление целого числа N в виде произведения простых чисел. Входные данные...

Разложение длинных чисел на простые множители
Кто нибудь сможет помочь с программой, которая разложит длинное число (пример 10^6) на простые...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru