#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;
}