1.输入整数,求范围内所有素数和。
#include <stdio.h>
int main()
{
int n,i,j,k;
while (scanf("%d",&n)!=EOF)
{
int sum=0;
for(i=2;i<=n;i++)
{ int flag=1;
for(j=2;j<i;j++)
{if(i%j==0) {flag=0;break;}}
if(flag==1) sum+=i;
}
printf("%d\n",sum);
}
}
注意:两重循环里用来判断是否是素数,一层循环外来记录是素数的值。
注意break的使用和flag的判断。
2.输出1+2^1+2^2+...+2^n的和,直到大于2000为止;输出:2047;
#include <stdio.h.>
int main()
{
int i,j,k,sum=0;
for(i=1;;i++)
{ k=1;
for(j=1;j<i;j++) {k=k*2;}
sum=sum+k;
if(sum>2000) break;
}
printf("%d",sum);
return 0;
}
注意:乘法要记得初始化k=1才可以继续往下乘。
3.很巧妙的方法。
2/1 3/2 5/3 8/5 13/8 21/13...求出前20项的和保留两位。输出:32.66
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a=1,b=2,sum=0;
int i;
for(i=0;i<20;i++)
{
sum=sum+b/a;
b=a+b;
a=b-a;
}
printf("sum=%0.2f",sum);
return 0;
}
注意:第一想法是数组但是需要设两个且太过于复杂,多观察给出的数据规律,一个循环就可以搞定^ ^。