В поисках идеального номера силы - PullRequest
0 голосов
/ 22 апреля 2020

Программа работает во всех случаях, кроме ((i ^ 2) * 2). Например, 18 (из-за (3 ^ 2) * 2 возвращает [3,3]) или 50 (из-за (5 ^ 2) * 2 возвращает [5,3]), но 27 и 125 для этого случая также работают.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class  test  {


    public static void main(String[] args) {
        //enter the number(n) from keyboard
        Scanner sc =new Scanner(System.in);
        int n=sc.nextInt();
        String str=null;
        double numb=(double)n;
        int count=0;
        *
        List<Integer> answer=new ArrayList<>();

           //Divide the number(numb) until it equals the result or not
            for ( int i =2;i<50;i++){
                while(numb % i==0){
                    numb=numb/i;
                    count++;
                     if (numb ==i){
                        answer.add((int)numb);
                        answer.add(count+1);
                            break;
                     }
                }
            }
        if(answer.size()==0){
            System.out.println(str);
        }else{
            int []array = answer.stream().mapToInt(i->i).toArray();
            System.out.println(Arrays.toString(array));
        }
    }
}

1 Ответ

0 голосов
/ 22 апреля 2020

Вы пытаетесь разделить введенный вами номер на любые числа от 2.50. Непростые числа могут быть пропущены, но они не повредят. (например, 10 не находит деления после уже обработанных 2 и 5).

Для каждого значения i вы делите его, пока это работает, и если оставшееся число равно i ПОСЛЕ деления этого out, он добавляется в список под названием answer. Это означает, что в конце ответ будет содержать только наивысший простой фактор ниже 50, если этот простой фактор появится в значении как минимум дважды. Только тогда результат деления может равняться i. Если вы просто ищете наивысшее простое число, проверьте, не упал ли результат до 1.

Вы не опубликовали то, чего хотите достичь. Но это, вероятно, не было предназначено.

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