-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHappyNumbers.java
More file actions
65 lines (51 loc) · 1.34 KB
/
Copy pathHappyNumbers.java
File metadata and controls
65 lines (51 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
*A happy number is defined by the following process. Starting with any positive integer,
*replace the number by the sum of the squares of its digits, and repeat the process until
*the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1.
*Those numbers for which this process ends in 1 are happy numbers, while those that do not end
*in 1 are unhappy numbers.
*/
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Stack;
public class happy_numbers {
public static Stack<Integer> seen = new Stack<Integer>();
public static void main(String[] args) {
read(args[0]);
}
public static void read(String f) {
File file = new File(f);
try {
Scanner in = new Scanner(file);
while (in.hasNextInt()) {
System.out.println(isHappy(in.nextInt()));
seen.clear();
}
} catch (FileNotFoundException e) {
}
}
private static int isHappy(int n) {
int sum = 0;
if (n == 1) {
return 1;
}
else
if (n == 0 || seen(n)){
return 0;
}
seen.push(n);
String dig ="" + n;
for(int i = 0; i < dig.length();i++){
int temp = Character.getNumericValue(dig.charAt(i));
sum += temp * temp;
}
return isHappy(sum);
}
private static boolean seen(int n) {
if(seen.search(n) >= 0){
return true;
}
return false;
}
}