GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Java/Maths/VampireNumber.java at master · tmluwei/Java Expand file tree/ Copy pathVampireNumber.javaMore file actions 78 lines (64 loc) · 2.05 KB / Copy pathVampireNumber.javaFile metadata and controls78 lines (64 loc) · 2.05 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 66 67 68 69 70 71 72 73 74 75 76 77 78 package Maths; import java.util.ArrayList; import java.util.Collections; /** * n number theory, a vampire number (or true vampire number) is a composite natural number with an * even number of digits, that can be factored into two natural numbers each with half as many * digits as the original number and not both with trailing zeroes, where the two factors contain * precisely all the digits of the original number, in any order, counting multiplicity. The first * vampire number is 1260 = 21 × 60. * * * <p>* link: https://en.wikipedia.org/wiki/Vampire_number * * * <p> */ public class VampireNumber { public static void main(String[] args) { test(10, 1000); } static void test(int startValue, int stopValue) { int countofRes = 1; StringBuilder res = new StringBuilder(); for (int i = startValue; i <= stopValue; i++) { for (int j = i; j <= stopValue; j++) { // System.out.println(i+ " "+ j); if (isVampireNumber(i, j, true)) { countofRes++; res.append("" + countofRes + ": = ( " + i + "," + j + " = " + i * j + ")" + "\n"); } } } System.out.println(res); } static boolean isVampireNumber(int a, int b, boolean noPseudoVamireNumbers) { // this is for pseudoVampireNumbers pseudovampire number need not be of length n/2 digits for // example // 126 = 6 x 21 if (noPseudoVamireNumbers) { if (a * 10 <= b || b * 10 <= a) { return false; } } String mulDigits = splitIntoDigits(a * b, 0); String faktorDigits = splitIntoDigits(a, b); return mulDigits.equals(faktorDigits); } // methode to Split the numbers to Digits static String splitIntoDigits(int num, int num2) { StringBuilder res = new StringBuilder(); ArrayList<Integer> digits = new ArrayList<>(); while (num > 0) { digits.add(num % 10); num /= 10; } while (num2 > 0) { digits.add(num2 % 10); num2 /= 10; } Collections.sort(digits); for (int i : digits) { res.append(i); } return res.toString(); } } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |