题目:给你一种圆周率pi的近似求法,所及给出一组数,里面数对互质的概率p = 6/(p1*pi)。
分析:简单题、数论。直接利用辗转相除求解即可。如果p为0则不能用来计算(分母是0)。
#include <cstdlib>
#include <cstdio>
#include <cmath>
int number[51];
int gcd( int a, int b )
{
return a%b?gcd( b, a%b ):b;
}
int main()
{
int n;
while ( ~scanf("%d",&n) && n ) {
for ( int i = 0 ; i < n ; ++ i )
scanf("%d",&number[i]);
int count = 0;
for ( int i = 0 ; i < n ; ++ i )
for ( int j = 0 ; j < i ; ++ j )
if ( gcd( number[i], number[j] ) == 1 )
count ++;
double p = 2.0*count/n/(n-1);
if ( count ) printf("%.6lf\n",sqrt(6/p));
else printf("No estimate for this data set.\n");
}
return 0;
}