用c语言编程求100到1000以内的所有素数之和
时间: 2023-08-05 22:09:39 浏览: 192
下面是使用C语言编写的求100到1000以内所有素数之和的程序:
```c
#include <stdio.h>
int main()
{
int i, j, flag, sum = 0;
for (i = 100; i <= 1000; i++)
{
flag = 1;
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
sum += i;
}
}
printf("100到1000以内所有素数之和为:%d\n", sum);
return 0;
}
```
程序中使用了两层循环,外层循环遍历100到1000之间的所有整数,内层循环用来判断这个整数是否为素数。如果内层循环中找到了一个能够整除该数的整数,则说明该数不是素数,将flag置为0,跳出内层循环;否则,说明该数是素数,将flag置为1。在外层循环结束后,如果flag等于1,则将该数累加到sum中。最后输出sum即为100到1000以内所有素数之和。
相关问题
C语言编程输出100以内所有素数
以下是C语言编程输出100以内所有素数的代码:
```c
#include <stdio.h>
int main() {
int flag = 1; // 标记:是素数 flag=1,不是素数 flag=0
// i:从 2 到 99 中找素数
for (int i = 2; i < 100; i++) {
for (int j = 2; j < i; j++) // 让 i 除以 2 到 i-1 之间的每一个数,看能否被整除
{
if (i % j == 0) // 若被整除,则 i 为合数
{
flag = 0; // 跳出,检查下一个 i
break;
}
}
if (flag == 1) // 若flag=1,说明没出现过 i%j = 0 的情况,i为质数,则输出i
{
printf("%d ", i);
}
else // 出现了i%j = 0 的情况,flag=0,i为为合数,不输出,将flag变回1
{
flag = 1;
}
}
return 0;
}
```
用C语言编程实现输出100以内的所有素数
```
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num);
int main(void) {
int i;
printf("2 ");
for (i = 3; i <= 100; i += 2) {
if (is_prime(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
bool is_prime(int num) {
int i;
if (num < 2) {
return false;
}
for (i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
```
首先我们定义一个函数`is_prime`,判断一个数是否为素数。这里采用了一个常见的优化算法,即在判断时只需要遍历到sqrt(num)即可。因为如果num有一对因子a和b,其中a<=sqrt(num),那么另一对必然是b和num/a,而num/a>=sqrt(num)。
然后在主函数中,我们从3开始遍历到100,每隔2个数进行判断,如果是素数就输出。注意2是最小的素数,需要先输出。
完整代码如上。
阅读全文