我必须完成函数prime,以便函数main生成用户指定范围内的所有质数,但当我运行指定1为最小值、100为最大值的代码时,它返回1和所有质数。
- 我怎么才能去掉1,一旦,根据定义,1不是质数?**
#include <cs50.h>
#include <stdio.h>
bool prime(int number);
int main(void)
{
int min;
do
{
min = get_int("Minimum: ");
}
while (min < 1);
int max;
do
{
max = get_int("Maximum: ");
}
while (min >= max);
for (int i = min; i <= max; i++)
{
if (prime(i))
{
printf("%i\n", i);
}
}
}
bool prime(int number)
{
// TODO
int j;
for (j = 2; j <= number - 1; j++)
{
if (number % j == 0)
{
return false;
}
}
return number;
}
最小值:1
最大值:100
1
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
1条答案
按热度按时间j9per5c41#
我认为最简单的解决方案是在质数函数的开头添加一个测试,以指示任何小于“2”的值都将产生“假”布尔值,这样,就可以对该函数进行简单的重构。
另外,注意函数中最后的return语句的修改。从技术上讲,任何大于零的整数值都将被视为布尔“真”值,最好在那里返回布尔“真”值,以便任何阅读代码的人都能清楚地看到。
看看这是否符合你项目的精神。