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

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

06.05.2018, 00:41. Показов 4287. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1) Рандомное задание числа 15 значное
2) Проверка на простоту и если не простое
3) Разложение на простые множетили
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.05.2018, 00:41
Ответы с готовыми решениями:

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

Составить программу, которая бы для введенного натурального числа N выводила его разложение на простые множители
Составить программу на java, которая бы для введенного натурального числа N (N <= 1000000000) выводила его разложение на простые...

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

21
 Аватар для Aviz__
2731 / 2042 / 505
Регистрация: 17.02.2014
Сообщений: 9,456
06.05.2018, 10:12
1)
Java
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
        StringBuilder box7lenNums = new StringBuilder();
        for (int i = 0; i < 14; i++) {
            box7lenNums.append((int)(Math.random()*10));
        }
        while (box7lenNums.charAt(0) == '0') {
            box7lenNums.deleteCharAt(0);
            box7lenNums.append((int)(Math.random()*10));
        }
        System.out.println(box7lenNums.toString());
        
    }
1
 Аватар для GreeNicee
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
06.05.2018, 17:33
2)
Java
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
//psvm ... (1)
 
        BigInteger num = new BigInteger(box7lenNums.toString());
        System.out.println(returnPrime(num));
 
    }
 
    public static boolean returnPrime(BigInteger number) {
        //check via BigInteger.isProbablePrime(certainty)
        if (!number.isProbablePrime(5))
            return false;
 
        //check if even
        BigInteger two = new BigInteger("2");
        if (!two.equals(number) && BigInteger.ZERO.equals(number.mod(two)))
            return false;
 
        //find divisor if any from 3 to 'number'
        for (BigInteger i = new BigInteger("3"); i.multiply(i).compareTo(number) < 1; i = i.add(two)) { //start from 3, 5, etc. the odd number, and look for a divisor if any
            if (BigInteger.ZERO.equals(number.mod(i))) //check if 'i' is divisor of 'number'
                return false;
        }
        return true;
    }
}
1
 Аватар для Aviz__
2731 / 2042 / 505
Регистрация: 17.02.2014
Сообщений: 9,456
06.05.2018, 17:36
c миру по нитке...))
1
1 / 1 / 0
Регистрация: 10.11.2017
Сообщений: 44
07.05.2018, 01:23  [ТС]


Добавлено через 51 секунду
Как бы мне ещё это сюда приклеить :

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void PrimeFactor(String args[])
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter any Number to find Prime Factors ");   //
        int number=sc.nextInt();
        System.out.println("Given Number is : " + number);
        System.out.print("Prime Factors are : " );
        for (int i = 2; i <= number; i++) {
 
            while (number % i == 0) {
                System.out.print(i + " ");
                number = number / i;
            }
        }
 
        if (number < 1) System.out.println(number);
    }
0
 Аватар для GreeNicee
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
07.05.2018, 09:47
в общем как-то так:)

Java
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
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
 
public class Test {
    public static void main(String[] args) {
        BigInteger num = getBigNum();
 
        List<BigInteger> primes = getPrimes(num);
 
        System.out.println(primes);
    }
 
    private static List<BigInteger> getPrimes(BigInteger num) {
        List<BigInteger> primes = new ArrayList<>();
        BigInteger sqrt = num.sqrt();
        BigInteger currentValue = num;
        BigInteger multiplier = BigInteger.valueOf(2);
        while (currentValue.compareTo(BigInteger.ONE) > 0 && multiplier.compareTo(sqrt) <= 0) {
            if (currentValue.mod(multiplier).equals(BigInteger.ZERO)) {
                primes.add(multiplier);
                currentValue = currentValue.divide(multiplier);
            } else if (multiplier.equals(BigInteger.valueOf(2))) {
                multiplier = multiplier.add(BigInteger.ONE);
            } else {
                multiplier = multiplier.add(BigInteger.valueOf(2));
 
            }
        }
        if (!currentValue.equals(BigInteger.ONE)) {
            primes.add(currentValue);
        }
        return primes;
    }
 
    private static BigInteger getBigNum() {
        StringBuilder box7lenNums = new StringBuilder();
        for (int i = 0; i < 14; i++) {
            box7lenNums.append((int) (Math.random() * 10));
        }
        while (box7lenNums.charAt(0) == '0') {
            box7lenNums.deleteCharAt(0);
            box7lenNums.append((int) (Math.random() * 10));
        }
        System.out.println(box7lenNums.toString());
        return new BigInteger(box7lenNums.toString());
    }
}
1
 Аватар для Aviz__
2731 / 2042 / 505
Регистрация: 17.02.2014
Сообщений: 9,456
07.05.2018, 12:37
Собственно, для этой задачи, вот, что я имел ввиду:
Java
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
import java.util.ArrayList;
 
public class CyberFactor {
 
    private static long get15DigNumber() {
        StringBuilder box7lenNums = new StringBuilder();
        for (int i = 0; i < 14; i++) {
            box7lenNums.append((int)(Math.random()*10));
        }
        while (box7lenNums.charAt(0) == '0') {
            box7lenNums.deleteCharAt(0);
            box7lenNums.append((int)(Math.random()*10));
        }
        return Long.parseLong(box7lenNums.toString());
    }
 
    private static ArrayList<Long> factor(long numForFact) {
        ArrayList<Long> answer = new ArrayList<>();
        answer.add(1L);
        long tmpLong = 2L;
        long currNum = numForFact;
        while (tmpLong * tmpLong <= numForFact) {
            if (currNum % tmpLong == 0) {
                answer.add(tmpLong);
                currNum /= tmpLong;
            }
            else tmpLong++;
        }
        answer.add(numForFact);
        return answer;
    }
 
    public static void main(String[] args) {
        ArrayList<Long> factNums = factor(get15DigNumber());
        if (factNums.size() > 2)
            System.out.println("Число " + factNums.get(factNums.size() - 1) +
                    "  не простое.\nИмеет следующие множители: " + factNums);
        else System.out.println("Число " + factNums.get(factNums.size() - 1) +
                "  простое.");
    }
}
1
1 / 1 / 0
Регистрация: 10.11.2017
Сообщений: 44
07.05.2018, 12:57  [ТС]
Цитата Сообщение от GreeNicee Посмотреть сообщение
BigInteger sqrt = num.sqrt();
а что это такое???
0
 Аватар для GreeNicee
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
07.05.2018, 13:08
Цитата Сообщение от Letreg Посмотреть сообщение
BigInteger sqrt = num.sqrt();
а что это такое???
корень
1
1 / 1 / 0
Регистрация: 10.11.2017
Сообщений: 44
07.05.2018, 22:46  [ТС]
Цитата Сообщение от GreeNicee Посмотреть сообщение
корень
а какую вы подключали библиотеку, так как sqrt не работает?
0
 Аватар для GreeNicee
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
07.05.2018, 22:49
Цитата Сообщение от GreeNicee Посмотреть сообщение
import java.math.BigInteger;
В классе BigInteger есть отдельный метод с корнем, а для примитивов и их оберток обычно используют Math.sqrt();
0
1 / 1 / 0
Регистрация: 10.11.2017
Сообщений: 44
08.05.2018, 23:05  [ТС]
Цитата Сообщение от GreeNicee Посмотреть сообщение
i
Прости ,но к сожалению в класе BigInteger нет такого метода
http://pr0java.blogspot.com/20... al_70.html



Добавлено через 2 минуты
Цитата Сообщение от Aviz__ Посмотреть сообщение
Собственно, для этой задачи, вот, что я имел ввиду:

Всё отлично вот только :
answer.add(1L); - показывает среди множителей "1" , а это не простое число и не ....
answer.add(numForFact); - выкидывает последним само не простое число, что уже неверно, так как множители должны быть простыми, это до того как допилил конец, ну и после также
конец переделал так(чтобы убрать само не простое число из множителей):

Java
1
2
3
4
5
6
7
public static void main(String[] args) {
  long a=get15DigNumber();
        ArrayList<Long> factNums = factor(a);
        if (factNums.size() > 0 )
            System.out.println("Число " + a + " - не просте. \nMає наступні множники: " + factNums);
        else System.out.println("Число " + a + " - просте.");
    }
Проблема :последний множитель через раз то есть в выводе ,то нет


Код в целом:

Java
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
import java.util.ArrayList;
 
public class Main {
 
    private static long get15DigNumber() {
        StringBuilder box7lenNums = new StringBuilder();
        for (int i = 0; i < 14; i++) {
            box7lenNums.append((int)(Math.random()*10));
        }
        while (box7lenNums.charAt(0) == '0') {
            box7lenNums.deleteCharAt(0);
            box7lenNums.append((int)(Math.random()*10));
        }
        return Long.parseLong(box7lenNums.toString());
    }
 
    private static ArrayList<Long> factor(long numForFact) {
        ArrayList<Long> answer = new ArrayList<>();
        //answer.add(1L);
        long tmpLong = 2L;
        long currNum = numForFact;
        while (tmpLong * tmpLong < numForFact) {
            if (currNum % tmpLong == 0) {
                answer.add(tmpLong);
                currNum /= tmpLong;
            }
            else tmpLong++;
        }
 
 
 
        // answer.add(numForFact);
        return answer;
    }
 
    public static void main(String[] args) {
        long a=get15DigNumber();
        ArrayList<Long> factNums = factor(a);
 
        if (factNums.size() > 0 )
            System.out.println("Число " + a + " - не просте. \nMає наступні множники: " + factNums);
        else System.out.println("Число " + a + " - просте.");
    }
}
0
 Аватар для GreeNicee
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
08.05.2018, 23:48
Цитата Сообщение от Letreg Посмотреть сообщение
Прости ,но к сожалению в класе BigInteger нет такого метода
http://pr0java.blogspot.com/20... al_70.html
Наверное у меня какой-то неправильный BigInteger
Миниатюры
Написать программу проверки числа на простоту и в противном случае разложения его на простые множители  
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.05.2018, 23:55
Цитата Сообщение от GreeNicee Посмотреть сообщение
Наверное у меня какой-то неправильный BigIntege
с 9 явы появилось
1
 Аватар для Aviz__
2731 / 2042 / 505
Регистрация: 17.02.2014
Сообщений: 9,456
09.05.2018, 08:10
c миру по нитке...))
Цитата Сообщение от Letreg Посмотреть сообщение
вот только
главное, ты разобрался))
0
1 / 1 / 0
Регистрация: 10.11.2017
Сообщений: 44
09.05.2018, 12:58  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
главное, ты разобрался))

Да, но вот только в чём дело???
Проблема :последний множитель через раз то есть в выводе ,то нет
Грешил на длину, но с ней вроде как всё в порядке
0
 Аватар для GreeNicee
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
09.05.2018, 13:52
Java
1
2
3
4
5
6
7
8
//factor...
        //после while{}
        if (currNum != 1)
        {
            answer.add(currNum);
        }
 
        return answer;
1
1 / 1 / 0
Регистрация: 10.11.2017
Сообщений: 44
09.05.2018, 14:27  [ТС]
Цитата Сообщение от GreeNicee Посмотреть сообщение
//factor...
//после while{}
Java
1
2
3
4
5
 if (currNum != 1)
 {
 answer.add(currNum);
}
return answer;

Вы имеете ввиду сюда???
Java
1
2
3
4
5
6
7
while (tmpLong * tmpLong < numForFact) {
            if (currNum % tmpLong == 0) {
                answer.add(tmpLong);
                currNum /= tmpLong;
            }
            else tmpLong++;
        }
я только не совсем понимаю ,что вы хотите этим получить
0
 Аватар для GreeNicee
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
09.05.2018, 14:40
Лучший ответ Сообщение было отмечено Letreg как решение

Решение

Цитата Сообщение от Letreg Посмотреть сообщение
я только не совсем понимаю ,что вы хотите этим получить
Да я то ничего не хочу получить), а вам это добавит в лист последний множитель (если он не равен 1 (т.к. это бессмысленно), хотя в принципе можно данное условие и убрать), а у вас ранее была закомменчена попытка совершения данного действия, только добавляли вы не ту переменную)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
while (tmpLong * tmpLong < numForFact) {
            if (currNum % tmpLong == 0) {
                answer.add(tmpLong);
                currNum /= tmpLong;
            } else tmpLong++;
        }
 
        if (currNum != 1)
        {
            answer.add(currNum);
        }
 
        return answer;
1
1 / 1 / 0
Регистрация: 10.11.2017
Сообщений: 44
09.05.2018, 15:01  [ТС]
Цитата Сообщение от Letreg Посмотреть сообщение
//factor...
//после while{}
Спасибо большое
Я просто сразу не понял , так как не заметил скобку и вставил его в цикл, ну и конечно понеслось...

У меня теперь только один вопрос остался , а вот всё же почему до этого оно последний множитель выводило только в 30-40% случаев ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.05.2018, 15:01
Помогаю со студенческими работами здесь

Составить программу разложения числа на простые множители
Дано натуральное число n&gt;=2. Составить программу разложения этого числа на простые множители.Следующим образом: каждый простой множитель p...

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

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

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

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


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

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

Новые блоги и статьи
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
API на базе FastAPI с Python за пару минут
AI_Generated 07.07.2025
FastAPI - это относительно молодой фреймворк для создания веб-API, который за короткое время заработал бешеную популярность в Python-сообществе. И не зря. Я помню, как впервые запустил приложение на. . .
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском https:/ / vkvideo. ru/ video-231374465_456239020 На английском https:/ / www. youtube. com/ watch?v=oskqtCrWns0 Исходники примера:
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru