Цель этого задания - найти количество пар, которые можно сформировать из каждых двух чисел в массиве.Условие состоит в том, что эти два числа не могут иметь общих множителей.
Я пытался использовать цикл сравнения числа по номеру в массиве с циклом фактора, начинающимся с 2. Этот код работает, но он превышает ограничение по времени для2 из 10 случаев использования codecrunch.
double estimate_PI(int list[], int size) {
int i, pair;
pair = size * (size - 1) / 2; //total number of pairs can be formed
int count = pair;
int j, l;
for (i = 0; i < size; i++) { //check the first number in the array
for (j = i + 1; j < size; j++) { //check compare the first number of the rest
// of the numbers in the array
for (l = 2; l < list[j]; l++) { //check for common factors
if (list[i] % l == 0 && list[j] % l == 0) { //if these two values have common factor
count--; //the possible number of pair reduce by 1
break;
}
}
}
}
// printf("%d\n count",count);
double PI = sqrt(6.0000 * pair / count);
return PI;
}
Этот метод требует слишком много времени для запуска codecrunch и помечает меня неправильно.