用筛选法求100之内的素数,把这些书放到一个一维数组之中,并求出下标为奇数的所有项的和,用筛选法求100之内的素数,把这些书放到一个一维数组之中,并求出下标为奇数的所有项的和.
程序没那么复杂。我写的一共才17行。
源程序如下:
#include
main()
{
int i,j,k=0,sum=0,a[50];
for(i=2;i<=100;i++) //这个循环用来考察每个2-100的数
{j=2;
while(i%j!=0) //用每一个小于i的数对i取模。
当j=i时此循环一定结束
j++;
if(i==j) //若只有当j=i时,才有i%j==0,说明这个数是素数
{a[k]=i;
k++;}
}
for(i=0;i<k;i=i+2) //这个循环用来求题中要求的和
sum+=a[i];
for(i=0;i<k;i++) //输出数据
if(a[i]!=0) printf(" %d",a[i]);
printf("\n");
printf("sum=%d",sum);
}
//说明:所得的素数放在数组a[]的 a[0]到a[k-1]中,从a[k]到a[50]装的是建立数组时系统分配的一些随即数(如果想装的是零的话,可先对数组赋值即可)。
我想这不影响程序结果。
运行结果如图:。
#include
#include
#define UB 100
#define LB 2
int generate_prime_array(int *p){
int i,k,j;
int count_prime=0;
for(i=LB;ik) {*p=i;count_prime++;p++;}
}/*outer for*/
return count_prime;
}
int prime_odd_sum(int *p){
int sum=0;
while(*p){
sum+=*p;
p+=2;
}
return sum;
}
void main(){
int count,i;
int a[50]={0};
count=generate_prime_array(a);
for(i=0;i<count;i++) printf("%d\t",a[i]);
puts("");
printf("sum=%d",prime_odd_sum(a));
}。
。