题目如图所示,遇到的问题是一直时间超限,想请教一下怎么解决!
这里同时附上我的代码,看看哪里有问题,谢谢!
#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
不知道你这个问题是否已经解决, 如果还没有解决的话: