package com.interview.books.question300; import com.interview.algorithms.general.C1_59_PrimeNumber; /** * Created_By: stefanie * Date: 14-8-21 * Time: 下午5:11 */ public class TQ17_SquareCheck { static int[] PRIMES = C1_59_PrimeNumber.generate(100); public static boolean isSquare(int n){ int low = 1; int high = n/2; while(low < high){ int mid = low + (high - low)/2; int square = mid * mid; if(square == n) return true; else if(square < n) low = mid + 1; else high = mid - 1; } return false; } public static int isSquareWithPrim(int n){ if(n == 1 || n == 0) return n; n = Math.abs(n); int sqrt = 1; int i = 0; while(n > 1 && n >= PRIMES[i] * PRIMES[i]){ if(n % PRIMES[i] == 0){ if(n % (PRIMES[i] * PRIMES[i]) == 0) { sqrt *= PRIMES[i]; n = n / PRIMES[i] / PRIMES[i]; } else return 0; } else { i++; } } if(n == 1) return sqrt; else return 0; } }