Как я могу заставить этот код печатать, сколько простых цифр в числе? - PullRequest
0 голосов
/ 31 января 2020

Разница между проблемой, с которой я столкнулся, и каждым ответом, который я получил на данный момент, заключается в том, что я пытаюсь заставить код печатать, сколько цифр является простым, а не сколько простых чисел в исходном числе. Например, если пользователь вводит 567, мне нужно проверить 5, 6 и 7 и сказать, сколько простых чисел.

В любом случае - я пытаюсь заставить этот код вывести на печать количество простых цифр в числе пользователь входит. Когда я запускаю его, он печатает число имеет (число) простых чисел. но он обычно печатает неправильный номер каждый раз, когда я запускаю его. Я думаю, что если я просто переключу некоторые переменные на другую, то будет хорошо go, но я не могу понять, какие из них мне нужно изменить. + edit: я почти уверен, что мне нужно каждый раз менять значение theNum, но я не уверен, как мне это сделать. Я попытался изменить x++ на theNum%10, но там говорилось, что х нужно увеличить. Кстати, я делаю theNum%10, потому что мне нужно проверить каждый ди git из theNum в отдельности.

int choice = 3, theNum, copy, x, y, counter, even, odd, zero;

System.out.print("Please enter a positive number ");
theNum = Integer.parseInt(kb.nextLine());

case 3:
    // using nested for loops print the prime numbers 
    counter = 0;
    for (x = 1; x <= theNum; x++) {
        for (x = 2; x <= theNum; x++) {
            if (theNum % 10 % x == 0) counter++;
        }
    }
    System.out.print("The number has " + counter + " prime numbers.");
    break;

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Можете ли вы сделать что-то простое, например, предопределить известные простые цифры (поскольку их так мало):

import java.util.*;

class Example {

    static Set<Integer> primeDigits = new HashSet<>(Arrays.asList(2, 3, 5, 7));

    public static void main(String args[] ) throws Exception
    {
        Scanner kb = new Scanner(System.in);

        System.out.print("Please enter a positive number: ");

        int theNum = Integer.parseInt(kb.nextLine());

        int counter = 0;

        while (theNum > 0) {
            if (primeDigits.contains(theNum % 10))
            {
                counter++;
            }

            theNum /= 10;
        }

        System.out.println("The number has " + counter + " prime digits.");
    }
}

ИСПОЛЬЗОВАНИЕ

% java Example
Please enter a positive number: 2147483647
The number has 4 prime digits.
% 
0 голосов
/ 31 января 2020

class TestClass {
    public static void main(String args[] ) throws Exception {

        Scanner kb = new Scanner(System.in);

        int theNum,counter=0,remainder;      

        System.out.print("Please enter a positive number ");
        theNum = Integer.parseInt(kb.nextLine());  

        while(theNum>0) {
            remainder = theNum%10;

            if(isPrime(remainder))
                counter++;

            theNum = theNum/10;
        }      
        System.out.print("The number has " + counter + " prime numbers.");
    }

    static boolean isPrime(int n) 
    { 
        if (n <= 1) return false; 

        for (int i = 2; i < n; i++) 
            if (n % i == 0) 
                return false; 

        return true; 
    }
}
...