我是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中输入多少数字,总和的结果始终为0.000000。
我必须做什么?
最佳答案
serie
为0.0的原因是list[i]
是整数。在serie
的减法/加法中将其首先转换为浮点型:
if (i % 2 == 0) {
serie = serie - (1 / (float)list[i]);
} else {
serie = serie + (1 / (float)list[i]);
}
关于c - 在C中存在连续和的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55660712/