0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27

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

08.06.2011, 15:12. Показов 31958. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, люди подскажите пожалуйста программный код по теме курсовой: Разложение натурального числа на простые множители. Заранее спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2011, 15:12
Ответы с готовыми решениями:

Напечатать разложение числа на простые множители
подскажите пожалуйста ? Заранее благодарен!! Дано натуральное число п. Напечатать разложение этого числа на простые множители....

Разложение на простые множители, ошибка неявного преобразования
Доброй ночи! Необходимо реализовать алгоритм разложения на множители, вот, что имеется: public BigInteger...

Разложение числа на множители (рекурсия)
public static void H2(int a, int k=2) { if (a>0) { if (a == k)...

7
Заблокирован
08.06.2011, 19:54
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
using System;
using System.Collections.Generic;
 
class Program
{
    static void Main()
    {
 
        Console.WriteLine("Введите натуральное число: ");
        int b = int.Parse(Console.ReadLine());
        List<int> ls = new List<int>();
        bool[] table = new bool[b + 1];
        int i, j;
 
        for (i = 0; i < table.Length; i++)
            table[i] = true;
 
        for (i = 2; i * i < table.Length; i++)
            if (table[i])
                for (j = 2 * i; j < table.Length; j += i)
                    table[j] = false;
 
        for (i = 1; i < table.Length; i++)
            if (table[i])
            {
                if (i >= 1)
                    ls.Add(i);
            }
        bool result = false;
        List<int> lstemp1 = new List<int>();
        List<int> lstemp2 = new List<int>();
        foreach (int n in ls)
        {
            if (b % n == 0)
            {
                result = true;
                lstemp1.Add(n);
 
            }
        }
 
 
 
        foreach (int n1 in lstemp1)
        {
            foreach (int n2 in lstemp1)
            {
 
                if (n1 * n2 <= b && !lstemp2.Contains(n1))
                {
                    lstemp2.Add(n1);
                }
 
            }
 
        }
 
        Console.Write("\nЧисло {0} состоит из простых множетелей -> ", b);
        foreach (int n in lstemp2) Console.Write(n + "; ");
        Console.ReadKey();
 
    }
}
 
/* Примечание: Если множетель повторяется, то он не выводится на экран.
 * Например: число 9 состоит из 1*3*3 . Вторая тройка записываться не будет.
*/
1
60 / 60 / 13
Регистрация: 23.04.2011
Сообщений: 110
08.06.2011, 21:16
Набросал программку, которая находит разложение числа в произведение простых с учетом кратности делителей.
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
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Factorization
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("n=");
            int n = int.Parse(Console.ReadLine());
            Factorization f = new Factorization();
            List<int> div = f.GetFactors(n);
 
            Console.Write("n=");
            for (int i = 0; i < div.Count - 1; i++)
                Console.Write("{0}*",div[i]);
            Console.WriteLine(div[div.Count-1]);
 
            Console.ReadLine();
        }
    }
 
    public class Factorization
    {
        List<int> Dividers;//делители
 
        public List<int> GetFactors(int n)
        {
            Dividers = new List<int>();
            Factorize(n);
            Dividers.Sort();
            return Dividers;
        }
 
        private void Factorize(int k)
        {
            int mult  = 1;//произвеление делителей, полученных на текущем шаге
            List<int> div = new List<int>();//делители, полученные на текущем шаге
            for (int i = 2; i <= Math.Floor(Math.Sqrt(k)); i++)//проходим по числам от 2 до корня из k
            {
                if (k % i == 0) //если делит...
                {
                    bool IsPrime = true;
                    foreach (int j in div)//проверяем делитель на простоту
                        if (i % j == 0) { IsPrime = false; break; }
                    if (IsPrime)//если делитель прост, то сохраняем
                    {
                        div.Add(i);
                        mult *= i;
                    }
                }
            }            
            if (mult == 1) { Dividers.Add(k); return; } //если k не имело собственных делителей, то разложение завершено
            else
            {                
                Dividers.AddRange(div);//в противном случае сохраняем все полученные делители
                int next = k / mult;
                if (next == 1) return;//если осталась 1, то разложение закончено
                Factorize(next);//иначе рекурсивно вызываем метод для разложения числа после вычеркивания всех делителей, полученных на этом шаге
                //в mult находится свободный от квадратов делитель k
            }
        }
    }
}
1
Неадекват
 Аватар для freeba
1498 / 1235 / 247
Регистрация: 02.04.2010
Сообщений: 2,807
09.06.2011, 10:26
Лучший ответ Сообщение было отмечено как решение

Решение

Могу предложить решение попроще:
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
using System;
 
namespace ExpandNumberForum
{
    class Program
    {
        public static void Main(string[] args)
        {
            string s = string.Empty;
            int b, c, n;
            
            Console.WriteLine("Input number: ");
            if (!int.TryParse(Console.ReadLine(), out n)) return;
            
            while ((n % 2) == 0)
            {
                n = n / 2;
                s += "2*";
            }
            b = 3; c = (int)Math.Sqrt(n)+1;
            while (b < c)
            {
                if ((n % b) == 0) 
                {
                    if (n / b * b - n == 0 )
                    {
                        s += b.ToString() + "*";
                        n = n / b;
                        c = (int)Math.Sqrt(n) + 1;
                    }
                  else
                    b += 2;
                }
                else
                    b += 2;
            }
            s += n.ToString();
            Console.WriteLine(s);
            
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}
6
Заблокирован
09.06.2011, 15:00
Цитата Сообщение от freeba Посмотреть сообщение
Могу предложить решение попроще
Хорошее решение.
1
0 / 0 / 0
Регистрация: 11.03.2011
Сообщений: 20
11.11.2011, 23:26
Подскажите пожалуйста, как преобразовать этот код, чтоб он работал с числами типа float или double???
0
185 / 188 / 17
Регистрация: 26.11.2010
Сообщений: 511
11.11.2011, 23:30
Цитата Сообщение от Doloven Посмотреть сообщение
Подскажите пожалуйста, как преобразовать этот код, чтоб он работал с числами типа float или double???
О_о.

int input = (int) yourDouble;

Вообще, бред. Как Вы себе представляете факторизацию числа 1234.5678 ?!
0
iv@n007
04.03.2013, 19:27
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var a,b:integer;
begin
write('введите число  ');
readln(a);
b:=2;
write(a,'=');
while a>=b do
begin
if a mod b = 0
then
begin
write(b);
a:= a div b;
if a >=b
then write('*');
end
else b:=b+1;
end;
end.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2013, 19:27
Помогаю со студенческими работами здесь

Рекурсия: разложение числа на простые множители
Суть задачи в разложении числа на простые множители, я написал код, все работает, но мне нужно чтоб было только 2 переменных в методе с...

Вывести все простые множители числа (рекурсия)
Рекурсия .Дано натуральное число n&gt;1.Вывести все простые множители этого в порядке неубывания с учетом кратности

Рекурсивный метод всех возможных разложений натурального числа n на множители
Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа n на множители (без повторений). Например,...

Разложение натурального числа на простые множители
Выведите разложение натурального числа n &gt; 1 на простые множители. Простые множители должны быть упорядочены по возрастанию и разделены...

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


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

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

Новые блоги и статьи
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. ) Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru