1.求和(累加):利用各项间关系求新项。累加
法一:能用求和公式直接运算的直接求和。
法二:(通法)
① Sum 初值(一般为零)
② 逐项相加:求item(通过项间关系由已知项推出)
sum=sum+item
Eg.
#include<stdio.h>
main()
{
int i,n,f1=1,f2=1;
float sum=0.25,item; //此时sum初值不为0,而是代入i=1时的值
printf("请输入n的值\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
f1=f1*i;
f2=f2*(2*i-1)*(2*i-2); //i要从第二项起
item=(float)f1*f2/(3*i+1);
sum+=item;
}
printf("sum=%.2f\n",sum);
return 0;
}
2.穷举法
例2:输出1000以内的所有素数,每行最多10个
#include<stdio.h>
main()
{
int n,m,cnt=0;
printf("1000以内的素数如下:\n");
for(n=2;n<1000;n++)—————————— for(n=2;n<1000;n++)——————
{ {
//判断n是否为素数 ① isPrime=1; //先假设为素数
for(m=2;m<n;m++) for(m=2;m<n;m++)
if(n%m==0)break; //不是素数 if(n%m==0)
if(m==n) //若是则输出—————— { ②
{ isprime=0;
if(cnt%10==0) break;
printf("\n"); }
printf("%4d",n); if(isprime)——————————
cnt++; isprime==1,则判断 为真,执行后面的语句
}
}
return 0;
}
例3:有100块砖若干人搬
男搬4,女搬3,
两个小儿抬一砖,
要求一次搬完,
问男女,小儿各若干?
解:#include<stdio.h>
main()
{
int cnt=0,m,w,c;
for(m=1;m<=25;m++)
for(w=1;w<=33;w++)
for(c=2;c<=200;c=c+2)
if(4*m+3*w+c*0.5==100&&c%2==0)
printf("(%d)man:%d,women:%d;children:%d\n",++cnt,m,w,c);
}