Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
31
Task/Kaprekar-numbers/Java/kaprekar-numbers.java
Normal file
31
Task/Kaprekar-numbers/Java/kaprekar-numbers.java
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
public class Kaprekar {
|
||||
private static String[] splitAt(String str, int idx){
|
||||
String[] ans = new String[2];
|
||||
ans[0] = str.substring(0, idx);
|
||||
if(ans[0].equals("")) ans[0] = "0"; //parsing "" throws an exception
|
||||
ans[1] = str.substring(idx);
|
||||
return ans;
|
||||
}
|
||||
|
||||
public static void main(String[] args){
|
||||
int count = 0;
|
||||
int base = (args.length > 0) ? Integer.parseInt(args[0]) : 10;
|
||||
for(long i = 1; i <= 1000000; i++){
|
||||
String sqrStr = Long.toString(i * i, base);
|
||||
for(int j = 0; j < sqrStr.length() / 2 + 1; j++){
|
||||
String[] parts = splitAt(sqrStr, j);
|
||||
long firstNum = Long.parseLong(parts[0], base);
|
||||
long secNum = Long.parseLong(parts[1], base);
|
||||
//if the right part is all zeroes, then it will be forever, so break
|
||||
if(secNum == 0) break;
|
||||
if(firstNum + secNum == i){
|
||||
System.out.println(i + "\t" + Long.toString(i, base) +
|
||||
"\t" + sqrStr + "\t" + parts[0] + " + " + parts[1]);
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println(count + " Kaprekar numbers < 1000000 (base 10) in base "+base);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue