【发布时间】:2020-12-09 17:30:20
【问题描述】:
我正在尝试编写一个程序来处理从一到一千的所有数字,但它不起作用。这是我目前写的,我找不到问题:
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
int i = 0, j = 0, mona = 0;
bool prime = true;
//for each number between 1-1000
//i go over the numbers between two(It's ok if the number is divisible by 1,Every number is divisible
by 1) and this number (not including the number itself)
//if the number is divisible by any number, it is not a prime number
for(i = 2; i <= 1000; i++)
{
for (j = 2; j < i; j++) {
if (i % j == 0)
prime = false;
if (prime)
{
printf("prime number: %d\n", i);
mona++;
}
}
}
printf("number of prime numbers: %d", mona);
return 0;
}
这是我得到的输出:
prime number: 3
number of prime numbers: 1
我也看到我没有考虑第二个。
【问题讨论】:
-
好吧,你永远不会将
prime设置回 true。一旦它是假的,它就永远不会回头。 -
谢谢,它仍然不起作用,但这是问题之一。现在它只打印 1-1000 之间的每个数字,并且它还多次打印每个数字。