用c语言求1到输入的n之间所有素数的和
时间: 2024-03-02 17:48:53 浏览: 128
好的,我可以为您提供一个求解1到输入的n之间所有素数的和的C语言程序。代码如下:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int num){
if(num <= 1) return false;
for(int i=2; i*i<=num; i++){
if(num%i == 0) return false;
}
return true;
}
int main(){
int n, sum=0;
printf("请输入一个正整数n:");
scanf("%d", &n);
for(int i=1; i<=n; i++){
if(isPrime(i)) sum += i;
}
printf("1到%d之间所有素数的和为%d\n", n, sum);
return 0;
}
```
程序中的 `isPrime()` 函数用于判断一个整数是否是素数,如果是素数则返回 `true`,否则返回 `false`。主函数中通过循环判断1到n之间的每个整数是否是素数,如果是素数则将其加入到变量 `sum` 中,最后输出 `sum` 即为1到n之间所有素数的和。
相关问题
使用C语言求出1~n之间的所有素数之和
好的,我可以为您提供使用C语言求出1~n之间的所有素数之和的代码。
以下是使用C语言求出1~n之间的所有素数之和的代码:
```c
#include <stdio.h>
int is_prime(int num);
int main() {
int n, i, sum = 0;
printf("Enter a positive integer n: ");
scanf("%d", &n);
for (i = 2; i <= n; i++) {
if (is_prime(i))
sum += i;
}
printf("The sum of primes between 1 and %d is %d\n", n, sum);
return 0;
}
int is_prime(int num) {
int i;
if (num < 2)
return 0;
for (i = 2; i*i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
```
其中,`is_prime`函数用于判断一个数是否为素数,如果是,则返回1,否则返回0。在`main`函数中,首先要求用户输入一个正整数n,然后使用循环遍历1~n之间的所有数,对于每个数,如果它是素数,则累加到`sum`变量中。最后输出1~n之间的所有素数之和。
希望能帮助到您!
c语言求2到n之间的素数
在C语言中,求2到n之间的素数可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种经典的寻找所有小于给定数字n的素数的算法。以下是简单的步骤:
```c
#include <stdio.h>
#include <stdbool.h>
void sieve_of_eratosthenes(int n) {
bool is_prime[n+1];
for (int i = 0; i <= n; i++) {
is_prime[i] = true; // 初始化所有数为质数假设
}
is_prime[0] = false;
is_prime[1] = false;
for (int p = 2; p * p <= n; p++) { // 只需检查到√n
if (is_prime[p]) {
// 把p的倍数标记为合数
for (int i = p * p; i <= n; i += p)
is_prime[i] = false;
}
}
// 输出所有的素数
printf("Prime numbers between 2 and %d are:\n", n);
for (int p = 2; p <= n; p++)
if (is_prime[p])
printf("%d ", p);
}
int main() {
int n;
printf("Enter a number (n): ");
scanf("%d", &n);
sieve_of_eratosthenes(n);
return 0;
}
```
当你运行这个程序并输入一个整数n时,它会打印出从2到n的所有素数。
阅读全文