阶乘(2):
- 阶乘公式1.0:
float fun(int m, int n)
{
int i,j;
float a=1.0,b=1.0,c=1.0,p=1.0;
for(i=1;i<=m;i++)
a*=i;
for(i=1;i<=n;i++)
b*=i;
for(i=1;i<=m-n;i++)
c*=i;
return a/(b*c);
}
- 阶乘公式2.0:
double fun(int n)
{
int i;
double s=0.0;
for(i=1;i<=n;i++)
s+=(1.0)/(i*(i+1));
return s;
}
数列(3):
- 数列求和 1.0:
float fun(int n)
{
int i;
float s=0.0,sum=0.0;
for(i=1;i<=n;i++)
{
s+=i;
sum=+(1.0)/s;
}
return sum;
}
- 数列求和 2.0:
double fun(int n)
{
int i;
double s=0.0;
for(i=1;i<=n;i++)
s+=(1.0/(2*i-1)-1.0/(2*i));
return s;
}
- 数列求和 3.0:
double fun(int n)
{
int i;
double s=0.0,s1=1.0;
for(i=1;i<=n;i++)
{
s1*=i;
s+=1.0/s1;
}
return s;
}
序列公式(2):
- 计算序列公式1.0:
double fun(double x)
{
int n=1;
double sum=0.0,s1=1.0,p=1.0,t=1.0,s0;
do{
s0=s1;
sum+=s0;
t*=n;
p*=(0.5-n+1)*x;
s1=p/t;
n++;
}while(fabs(s0-s1)>=1e-6);
return sum;
}
- 计算序列公式2.0:
double fun( int m )
{
double i;
double s=0.0;
for(i=1;i<=m;i++)
s+=log(i);
return sqrt(s);
}
平方根之和(4):
- 特定自然数之和的平方根:
double fun( int n)
{
int i;
double s=0.0;
for(i=21;i<=n;i++)
if(i%21==0)
s+=i;
return sqrt(s);
}
- 范围内平方根之和:
double fun(int n)
{
int i,j;
double s=0.0;
for(i=3;i<=n;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if(i==j)
s+=sqrt(1.0*i);
}
return s;
}
- 范围内素数的平方根之和:
double fun(int n)
{
int i,j;
double s=0.0;
for(i=3;i<=n;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if(i==j)
s+=sqrt(1.0*i);
}
return s;
}
- 相邻两个数的平均值的平方根之和:
double fun(double x[9])
{
int i,j=1;
double s=0.0;
for(i=0;i<9;i++)
if(j<=8)//这里的j有大妙处
{
s+=sqrt((x[i]+x[i+1])/2.0);//与for循环矛盾
j++;
}
return s;
}
幂,级数和方差(4) :
- 级数和:
double fun(double x, int n)
{
int i;
double s0=1.0,s1=1.0;
for(i=1;i<=n;++i)
{
s1*=i;
s0+=pow(x,i)/s1;
}
return s0;
}
- 方差计算:
double fun(double x[10])
{
int i;
double x1=0.0,s=0.0;
for(i=0;i<10;i++)
x1+=x[i]/10;
for(i=0;i<10;i++)
s+=(x1-x[i])*(x1-x[i])/10;
return sqrt(s);
}
- 求幂和:
double fun(int n)
{
double s=1.0,s1=1.0;
for(int i=2;i<=n;i++)
{
s1+=pow(i,0.5);
s+=s1;
}
return s;
}
- 幂的计算:
struct mpow
{
double a;
int t;
};
double fun(struct mpow *x,int n)
{
int i,j;
double sum=0.0;
for(i=0;i<n;i++)
{
double power=1.0;
for(j=0;j<x[i].t;j++)
power*=x[i].a;
sum+=power;
}
return sum;
}
其他(3):
- 迭代法求方程的根:
double fun()
{
double x1=0.0,x0;
do{
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=1e-6);
return x1;
}
- 选择性奇偶算术平均值(平均值):
double fun( int xx[], int *yy )
{
int i,a=0,b=0;
double s1=0.0,s2=0.0;
for(i=0;i<N;i++)
{
if(xx[i]%2)
{
s1+=xx[i];
a++;
}
else
{
s2+=xx[i];
b++;
}
}
if(a>b)
{
*yy=a;
return s1/a;
}
else
{
*yy=b;
return s2/b;
}
}
- 求π值:
double fun ( double eps)
{
int n=1;
double s=0.0,s1=1.0;
while(s1>=eps)
{
s+=s1;
s1=s1*n/(2*n+1);
n++;
}
return 2*s;
}