求500以内的10个最大素数及其和并分别输出
法一:循环搜索
#includeint main(void) { int i, j; int count = 0;//保持已经找到的素数个数 int sum = 0; for (i = 500; i > 0; i--) { for (j = (i - 1); j > 0; j--) if (i % j == 0) break; if (j == 1)//当j能够减到1时,说明该数一直除到1,都不能被整除,故为素数 { count++; sum += i; printf("%6d", i); } if (count == 10) { printf("n sum=%dn", sum); break; } } return 0; }
法二:一维数组做函数传递参数(方法复杂不太推荐)
#include#include int sum_prime(int a[]); int prime(int n); int main() { int i, a[10], sum; sum = sum_prime(a); for (i = 0; i < 10; i++) printf("%6d", a[i]); printf("n sum=%dn", sum); return 0; } int sum_prime(int a[]) { int i, j = 499, sum = 0; for (i = 0; i < 10; ) { if (prime(j))//prime函数,当为素数时返回1 { sum = sum + j; a[i] = j; i++;//控制返回的素数是前10个 } j--; } return sum; } int prime(int n) { int i, k; k = (int)sqrt((double)n); for (i = 2; i <= k; i++) { if (n % i == 0) return 0; } if (i >= k + 1)//一直用i除到最大都还不能被整除,所以为素数 return 1; }



