import java.util.Scanner;
import java.util.TreeSet;
public class Main
{
static TreeSet<Integer> primes = new TreeSet<Integer>();
public static void main(String[] args)
{
generatePrimes();
Scanner sc = new Scanner(System.in);
while (true)
{
int n = sc.nextInt();
if (n == 0)
break;
int[] array = new int[n];
int total = 0;
int common = 0;
for (int i = 0; i < n; i++)
{
array[i] = sc.nextInt();
for (int j = 0; j < i; j++)
{
total++;
if (hasCommonFactors(array[i], array[j]))
common++;
}
}
if (total - common == 0)
System.out.println("No estimate for this data set.");
else
System.out.format("%.6f\n", Math.sqrt(6.0 * total / (total - common)));
}
}
static boolean hasCommonFactors(int a, int b)
{
if (a == 1 || b == 1)
return false;
if (a == 0 || b == 0)
return true;
if (a == b)
return true;
int max = a > b ? a : b;
int min = a + b - max;
if (primes.contains(min))
{
if (primes.contains(max))
return false;
else if (max % min == 0)
return true;
return false;
}
else if (primes.contains(max))
return false;
else
{
for (Integer n : primes)
{
if (n > min)
return false;
if (min % n == 0 && max % n == 0)
return true;
}
return false;
}
}
static void generatePrimes()
{
primes.add(2);
primes.add(5);
for (int i = 3; i < 32768; i += 2)
{
int tail = i % 10;
if (tail == 1 || tail == 3 || tail == 7 || tail == 9)
{
boolean isPrime = true;
for (Integer n : primes)
{
if (i % n == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
primes.add(i);
}
}
}
}
ZOJ-1337
最新推荐文章于 2017-09-02 21:48:19 发布