C语言关于质数的一个问题

题目如图所示,遇到的问题是一直时间超限,想请教一下怎么解决!

img

这里同时附上我的代码,看看哪里有问题,谢谢!

#include
#include
int sushu(int n)
{
    int k,i;
    k=sqrt(n);
    for(i=2;i<=k;i++)
    {
        if(n%i==0)
          break;
    }
    if(i>=k+1)
      return 1;
    else
      return 0;
}
int main()
{
    int QQ;
    scanf("%d",&QQ);
    int i;
    for(i=2;iif(sushu(i))
          printf("%d\n",i);
    }
    return 0;
}


质数7位数肯定慢,需要用筛法,而不是直接计算。

以下是一个Python代码实现,可以输出小于给定QQ号的所有质数:

qq = input("请输入七位QQ号:")
qq_num = int(qq)

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

for num in range(2, qq_num):
    if is_prime(num):
        print(num)

首先,我们读入一个七位QQ号,然后将它转换为整数类型。接下来,我们定义一个函数 is_prime(n),用于判断一个数字是否为质数。这个函数会遍历从2到这个数的平方根之间的所有整数,如果存在一个数能够整除这个数,则这个数不是质数。如果没有这样的数,那么这个数就是质数。

然后,我们从2开始遍历到小于给定QQ号的所有数字,对于每个数字,我们都调用 is_prime() 函数进行判断。如果这个数字是质数,那么就打印出来。
输入

20

输出:

3
5
7
11
13
17
19
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^