一道关于C语言的基础题型

img


这是一道关于C语言的基础题型,一直运行不通过,希望会的同学给我一些建议。

我有一篇文章,其中 优化的暴力求解 可能对你有帮助

https://blog.csdn.net/apple_53792700/article/details/127575792?spm=1001.2014.3001.5502

根据你的问题 我给出了如下程序

#include <stdio.h>
#include <math.h>

// 输入数 x 如果 x 是素数 就返回 true 否则就返回 false
bool IsPrimeNumber( int x );

int main(){
    // 输入一个数
    int input = 0;
    scanf("%d",&input);
    if( IsPrimeNumber(input) ){
        printf("YES");
    } else {
        printf("NO");
    }
}

bool IsPrimeNumber( int x ){
    // 遍历除 1 以外所有比自己小的整数
    int sq = sqrt(x);
    for( int i = 2 ; i <= sq; i++ ){
        if( x%i == 0 ){
            // 如果 x 可以被 i 整除 那么就返回的 假 代表这个数不是素数
            return false;
        } else { /* 如果不能被 i 整除就继续遍历 */ }
    }
    // 如果除 1 以外所有比自己小的整数都不能被整除,那么他就是素数
    if( x <= 1 ){
        return false;
    } else {
        return true;
    }
}

$$\color{red}{如果觉得有用,请采纳,谢谢!}$$