质数的个数,问题是超时了

img

大佬们,这个超时怎么解决啊

img

回答:首先,咱去换一下等宽字体 Cosolos,不然这样看着太不人性化了;
感觉这程序有点抽象啊,咱判断素数,判断到 根号,是可以,但是为啥要传入两个参数啊,我找了一个简单的素数个数的代码,如下:

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

int main()
{
    int m;  // 输入的整数 
    int i;  // 循环次数
    int k;  // m 的平方根 

    printf("输入一个整数:");
    scanf("%d", &m);

    // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
    k = (int)sqrt((double)m);
    for (i = 2; i <= k; i++)
        if (m % i == 0)
            break;

    // 如果完成所有循环,那么m为素数
    // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
    if (i > k)
        printf("%d是素数。\n", m);
    else
        printf("%d不是素数。\n", m);

    return 0;
}

我觉得你程序大体没有问题,只是想得到两个数范围内的素数个数,然后输出个数,你可以在这个程序的基础上进行修改