# C 程序：检查数字是否为质数

> 原文： [https://www.programiz.com/c-programming/examples/prime-number](https://www.programiz.com/c-programming/examples/prime-number)

#### 在此示例中，您将学习检查用户输入的整数是否是质数。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C `if...else`语句](/c-programming/c-if-else-statement)
*   [C `for`循环](/c-programming/c-for-loop)
*   [C `break`和`continue`](/c-programming/c-break-continue-statement)

* * *

质数是一个只能被`1`及其本身整除的正整数。 例如：2、3、5、7、11、13、17

* * *

## 检查质数的程序

```c
#include <stdio.h>
int main() {
    int n, i, flag = 0;
    printf("Enter a positive integer: ");
    scanf("%d", &n);

    for (i = 2; i <= n / 2; ++i) {

        // condition for non-prime
        if (n % i == 0) {
            flag = 1;
            break;
        }
    }

    if (n == 1) {
        printf("1 is neither prime nor composite.");
    }
    else {
        if (flag == 0)
            printf("%d is a prime number.", n);
        else
            printf("%d is not a prime number.", n);
    }

    return 0;
} 
```

**输出**

```c
Enter a positive integer: 29
29 is a prime number. 
```

* * *

在程序中，从`i = 2`循环到`i < n/2`进行`for`循环。

在每次迭代中，使用以下命令检查`n`是否可被`i`完全整除。

```c
if (n % i == 0) {

} 
```

如果`n`被`i`完全整除，则`n`不是质数。 在这种情况下，`flag`设置为 1，并使用`break`语句终止循环。

循环后，如果`n`为质数，则`flag`仍为 0。但是，如果`n`为非质数，则`flag`将为 1。

访问此页面以了解如何[打印两个间隔](https://www.programiz.com/c-programming/examples/prime-number-intervals)之间的所有质数。