gpt4 book ai didi

c - C 中连续求和的问题

转载 作者:行者123 更新时间:2023-11-30 19:02:36 25 4
gpt4 key购买 nike

我是 C 初学者,当我尝试对一系列素数求和时遇到问题。

#include <stdio.h>

int main(void) {

int n, div, prime, i, x;
float serie;
serie = 0;

scanf("%d", &n);
int list[n];

for (int i = 0; i < n; i++) { // creates a sequence from 1 to n
list[i] = i + 1;
}

for (int i = 1; i < n; i++){ // check if a number is prime
div = 2;
prime = 1;
while (div < list[i]) {
if (list[i] % div == 0) {
prime = 0;
}
div = div + 1;
}
if (prime == 1) {
if (i % 2 == 0) {
serie = serie - (1 / list[i]);
} else {
serie = serie + (1 / list[i]);
}
}
}
printf("%f", serie);

return 0;
}

无论我在 n 中输入什么数字,sum 的结果始终是 0.000000。我必须做什么?

最佳答案

这里的代码:

        if (prime == 1) {
if (i % 2 == 0) {
serie = serie - (1 / list[i]);
} else {
serie = serie + (1 / list[i]);
}
}

正在执行整数除法,这总是会导致 (1/list[i]) 部分计算为 0。为了执行计算,您必须使用浮点运算,您可以通过使用float 转换,或浮点文字(.f 后缀)而不是整数:

        if (prime == 1) {
if (i % 2 == 0) {
serie = serie - (1.f / list[i]);
} else {
serie = serie + (1.f / list[i]);
}
}

关于c - C 中连续求和的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55660712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com