目录
1.使用函数求素数和
int prime( int p )
{
int i = 0;
int flag = 1;
if(p<2)
flag=0;
for(i=2;i<p;i++)
{
if(p%i==0)
{
flag = 0;
break;
}
}
return flag;
}
int PrimeSum( int m, int n )
{
int i = m;
int sum =0;
for(i = m;i<=n;i++)
{
if(prime(i)==1)
sum+=i;
}
return sum;
}
注意:1.判断素数是n<2的情况要考虑 2.for(i=m;i<=n;i++)
2.使用函数验证哥德巴赫猜想
int prime( int p )
{
for(int i=2;i<=p;i++)
{
if(p%i==0)
{
if(p==i) return 1;
else return 0;
}
}
}
void Goldbach( int n )
{
for(int i=2;i<=n;i++)
{
if(prime(i)==1 && prime(n-i)==1)//这里巧妙地解决n=p+q还要pq均为素数的问题,值得学习
{
printf("%d=%d+%d",n,i,n-i);
break;//记得打破循环,题目要求只输出最小的p的情况
}
}
}
判断素数的函数参考题目一为准
3.使用函数输出水仙花数
int narcissistic( int number )
{
int i,n,sum=0,m=0,a=1,b;
n=number;
while(n)//先判断位数
{
n/=10;
m++;
}
n=number;
while(n)
{
a=1;
b=n%10;
for(i=1;i<=m;i++)a*=b;
n/=10;
sum+=a;
}
if(sum==number)return 1;
else return 0;
}
void PrintN( int m, int n )
{
int i;
for(i=m+1;i<n;i++)
if(narcissistic(i)==1)
printf("%d\n",i);
}
注意:for(i=1;i<=m;i++)
4.递归求阶乘和
double fact( int n )
{
if(n>1) return n*fact(n-1);
else if(n==1||n==0) return 1;
}
double factsum( int n )
{
if(n<1) return 0;
return factsum(n-1)+fact(n);
}
double fact( int n )
{
int i,a=1;
if(n<=0)a=1;
else
for(i=1;i<=n;i++)a*=i;
return a;
}
double factsum( int n )
{
int i,j,t,sum=0;
if(n<=0)return sum;
else
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)t*=j;
sum+=t;
t=1;//每次循环后重置为1
}
return sum;
}
double fact( int n )
{
int s;
if( n==0 )s = 1;
else
s = n*fact(n - 1);
return s;
}
double factsum( int n )
{
double sum = 0;
int i;
for(i = 1;i <= n;i++)
sum+=fact(i);
return sum;
}
5.递归求简单交错幂级数的部分和
double fn( double x, int n ){
double f;
if(n==1){
f=x;
}else{
f=pow(-1,n-1)*pow(x,n)+fn(x,n-1);
}
return f;
}
double fn( double x, int n )
{
if(n==1) return x;
else return x-fn(x,n-1)*x;
}
6.十进制转换二进制
void dectobin( int n )
{
if (n == 0)
printf("0");
else if (n == 1)
printf("1");
else
{
dectobin(n / 2);
printf("%d", n % 2);
}
}
void dectobin( int n )
{
int a[10];
int temp, i;
do
{
a[i++] = n % 2;
}while ((n /= 2) != 0);
for (--i; i >= 0; i--)
printf("%d", a[i]);
}