#include<stdio.h>
int prime(int a[]){
int i,flag,m,x=0;
for(i=2;i<=1000;i++){
flag=0;
for(m=2;m<=i;m++){
if(i%m==0){
flag=1; break;
}
}
if(flag==0){
a[x]=i;
x++;
}
}
return x;
}
void print(int a[],int x){
int i;
for(i=0;i<x;i++){
printf("%d",a[i]);
}
}
int sum(int a[],int x){
int i,s;
s=0;
for(i=0;i<x;i++){
s=s+a[i];
}
return s;
}
int main(){
int a[1000],s,x;
x=prime(a);
print(a,x);
s=sum(a);
printf("%d\n",s);
return 0;
}
修改处见注释,供参考:
#include <stdio.h>
int prime(int a[]) {
int i, flag, m, x = 0;
for (i = 2; i <= 1000; i++) {
flag = 0;
for (m = 2; m*m <= i; m++) { //修改
if (i % m == 0) {
flag = 1; break;
}
}
if (flag == 0) {
a[x] = i;
x++;
}
}
return x;
}
void print(int a[], int x) {
int i;
for (i = 0; i < x; i++) {
printf(i==0?"%d":" %d", a[i]); //修改
}
printf("\n");
}
int sum(int a[], int x) {
int i, s;
s = 0;
for (i = 0; i < x; i++) {
s = s + a[i];
}
return s;
}
int main() {
int a[1000], s, x;
x = prime(a);
print(a, x);
s = sum(a, x);//修改
printf("%d\n", s);
return 0;
}
自定义函数prime中,第二个for循环条件m<=i是错的,应该是m<i
素数:相当于质数,除了1和本身外,不能被其它数整除。