首页 > 解决方案 > 打印输出 C 的问题

问题描述

所以我必须为学校编写代码。我做到了,但我的输出不是他们要求的方式。这段代码给了我两个不同数字之间的质数。所以我必须成行打印这些数字。但是,是的,下面的答案之间有零,你可以明白我的意思。我怎样才能解决这个问题?

#include <stdio.h>

int is_prime (int number)
{
    int is_prime= 1, i;

    if (number < 2)
    {
        is_prime = 0;
    }
    else
    {
        for(i = 2; (i * i) <= number; i++)
        {
            if ((number % i) == 0)
            {
                is_prime = 0;
                break;
            }
            else
            {
                is_prime = 1;
            }
        }
    }
    return is_prime;
}

int main (void)
{
    int lower_limit, upper_limit, i;

    scanf("%d\n%d", &lower_limit, &upper_limit);

    for(i = lower_limit; i <= upper_limit; i++)
    {
        if (is_prime (i))
        {
            printf("\n%d", i);
        }
        else
        {
            printf("\n%d", is_prime(i));
        }
    }
    return 0;
}

输出

0
11
0
13
0
0
0
17
0
19
0

参考

11
13
17
19

标签: cprimes

解决方案


它在这个if块中:

    if (is_prime (i))
    {
        printf("\n%d", i);
    }
    else
    {
        printf("\n%d", is_prime(i));
    }

这说的是“如果数字是素数,打印它,否则打​​印它是否是素数(此时你已经确定它不是)”。

只是摆脱else块。


推荐阅读