Как я могу получить ложное значение, если введенное число не является счастливым?

#java #math #primes #happy

#java #математика #простые числа #счастлив

Вопрос:

* привет, вот мой ответ на этот вызов :

Напишите алгоритм, чтобы определить, является ли число n «счастливым».

Счастливое число — это число, определяемое следующим процессом: начиная с любого положительного целого числа, замените число суммой квадратов его цифр и повторяйте процесс до тех пор, пока число не будет равно 1 (где оно останется), или оно бесконечно повторяется в цикле, который не включает 1. Те числа, для которых этот процесс заканчивается на 1, являются счастливыми числами.

мой код работает и выдает истинное значение, только если число является счастливым*

 
    public class Main {
    
        public static void main(String[] args) {
    
                    System.out.println(isHappy(12));
    
                    }
    
        public static boolean isHappy(int number) {
            
                while (number != 1 ) {
                    number = SumOfintegers(number); //to keep looping until It find sum=1
                 }
                 return true ; 
         }
    
        public static int SumOfintegers(int number){
               
                    int sum =0;
                    int news = 0;
                    while (number > 0) {
                        int num = number % 10;
                        number /= 10;
                        news = num * num;
                        sum = sum   news;
                    }
                    return sum;
               }
    }
  

Комментарии:

1. пожалуйста, объясните вашу проблему более четко. Кроме того, это не место для обсуждения проблем с кодированием 🙂

2. Посмотрите на Project Euler problem 92 для справки. Есть много веб-сайтов, дающих советы по этим проблемам.

Ответ №1:

итак, я решил эту проблему «счастливого числа» один раз, и это мой код с использованием рекурсии с объяснением:

 public static void main(String[] args) {
    System.out.println(nextHappyNum(0));
}
//method to find next happy number
static int nextHappyNum(int num){
    int x =num 1;
    if(isHappy(x) == true){ //base case where the next number is happy number
        return x;
    } else{
        return nextHappyNum(num 1); //recursively call the method to check
    }
}

//method to check if number is happy or not
static boolean isHappy(int num){
    while(num != 1 amp;amp; num != 4){
        num = calculateHappy(num); //this loop will call the checkHappy() method until it reach 1 or 4
    }
    if(num == 1){ //if result is 1 -> happy number
        return true;
    } else if(num == 4 ){ //final result is 4 -> not happy number
        return false;
    } else{
        return false;
    }
}

//method to calculate the sum of number digits
static int calculateHappy(int num){
    int sum = 0;
    int rem = 0;
    //create while loop to calculate the digit number, remainder of modulus 10 is the second digit
    //first digit is = the number/10 and the remainder of that int 
    while(num != 0){ 
        rem = num%10; //calculating the remainder 
        sum  = (rem*rem); //calculate the square root of remainder and add it to the sum
        num = num/10; //divide the number by 10 - due to this data type is int, so the first digit will be taken
    }
    return sum;
}