Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Test {
- public static void main(String[] args) throws IOException {
- //Будем называть натуральное число трипростым, если в нем любые подряд идущие 3 цифры образуют трехзначное простое число.
- //Требуется найти количество N-значных трипростых чисел.
- //Определение количества знаков из консоли.
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- System.out.print("Сколько знаков будет в ваших числах?\nОтвет: ");
- int n = Integer.parseInt(reader.readLine());
- //Проверка на вводимое число.
- while(n <= 2) {
- System.out.println("\nОй, вы ввели неподходящее число, минимальное количество знаков - 3.");
- System.out.print("Попробуйте снова: ");
- n = Integer.parseInt(reader.readLine());
- }
- //Перебор всех n-значных чисел и разбиение каждого на цифры с занесением последних в массив.
- int counter = 0;
- //System.out.println("Все трипростые " + n + "-значные числа: ");
- for (int number = (int)Math.pow(10, n-1); number < (int)Math.pow(10, n); number++) {
- int[] array = digitsInNumber(number, n);
- if (isTripleSimple(array)) {
- //System.out.println(number);
- counter++;
- }
- }
- System.out.println("Количество трипростых " + n + "-значных чисел: " + counter);
- }
- //Функция разбиения числа на массив из цифр этого числа.
- public static int[] digitsInNumber(int number, int amountOfDigits) {
- int[] array = new int[amountOfDigits];
- for (int i = amountOfDigits - 1; i >= 0 && number>0; i--, number/=10) {
- array[i] = number % 10;
- }
- return array;
- }
- //Функция, определяющая, является ли число трипростым.
- public static boolean isTripleSimple(int[] array) {
- boolean isTripleSimple = false;
- for (int i = 0; i < array.length-2; i++) {
- String sNumber = "";
- sNumber += array[i];
- sNumber += array[i+1];
- sNumber += array[i+2];
- int tempNumber = Integer.parseInt(sNumber);
- if(tempNumber >= 100 && isSimple(tempNumber)) isTripleSimple = true;
- else return false;
- }
- return isTripleSimple;
- }
- //Функция проверки простоты числа.
- public static boolean isSimple (int number) {
- int temp;
- for (int i=2; i<=number/2; i++) {
- temp = number % i;
- if (temp == 0) {
- return false;
- }
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement