输出 2~n之间所有素数,并求和,n由键盘输入。素数是只能被1和自身整除的整数。要求编写函数判断自然数x是否为素数,函数原型为:\nint isprime(unsigned int x); //x是素数
时间: 2023-06-05 07:47:43 浏览: 178
Java用面向对象和面向过程方法解求100内素数并输出素数之和
5星 · 资源好评率100%
题目要求编写一个函数,输出2到n之间的所有素数,并求和,n由键盘输入。素数是只能被1和自身整除的整数。要求编写函数判断自然数x是否为素数,函数原型为:int isprime(unsigned int x); //x是素数。
解题思路:定义一个保存素数的数组,从2开始遍历到n,如果是素数,则将其加入数组并计算素数之和。
代码实现:
```python
#include <stdio.h>
#include <stdlib.h>
int isprime(unsigned int x); //函数声明
int main() {
unsigned int n;
int sum = 0, cnt = 0;
printf("请输入一个正整数n:\n");
scanf("%u", &n);
int *prime_arr = (int*)malloc((n-1)*sizeof(int)); //定义一个指针变量,代表素数数组
for (int i = 2; i <= n; i++) {
if (isprime(i)) {
prime_arr[cnt++] = i;
sum += i;
}
}
printf("2~%u之间的所有素数为:\n", n);
for (int i = 0; i < cnt; i++) {
printf("%d ", prime_arr[i]);
}
printf("\n素数之和为:%d\n", sum);
free(prime_arr); //释放素数数组的动态分配内存
return 0;
}
int isprime(unsigned int x) {
for (int i = 2; i < x; i++) {
if (x % i == 0) {
return 0; //不是素数,返回0
}
}
return 1; //是素数,返回1
}
```
阅读全文