我试图从代码厨师那里解决识别素数的问题
爱丽丝和鲍勃过了很长时间才见面。像往常一样,他们喜欢玩一些数学游戏。这一次爱丽丝接了电话,决定了比赛。游戏很简单,爱丽丝说出一个整数,鲍勃必须说出这个数字是否是质数。鲍勃像往常一样知道逻辑,但由于爱丽丝没有给鲍勃太多时间思考,所以鲍勃决定写一个计算机程序。
通过编写一个计算机程序来帮助Bob完成这项任务,该程序将计算该数字是否为素数。
输入
输入的第一行包含一个整数T,即测试用例数。然后是T线。
接下来的每一条T线都包含一个整数N,必须对其进行素性测试。
输出
对于单独一行中的每个测试用例输出,如果数字为素数,则为“是”,否则为“否”
约束条件
1 ≤ T ≤ 20
1 ≤ N ≤ 100000
输入:
5
23
13
20
1000
99991
输出:
yes
yes
no
no
yes
我的代码不被接受,即使我得到了预期的输出,我可以知道哪个测试用例不令人满意吗?
代码:
t=int(input())
for i in range(t):
x=int(input())
if x > 0:
if x%2 == 0 and x % x == 0:
print('no')
else:
print('yes')
else:
pass
质数是一个只能被它本身和1整除的数。这意味着,为了检查一个数字x
是否是质数,你必须确保它不能被从2到sqrt(x)的任何数字整除。您可以在这里检查该范围背后的数学原因。
这是程序中的主要缺陷,因为您只检查了2和x的条件。
在这个程序中,标志
变量初始化为0,这是用作检查数字是否为质数的指标。同时循环,从2迭代到sqrt(x),如果x
碰巧可以被任何其他数字整除,则标志被设置为1并中断。
在循环执行后,如果标志值仍然是0,它意味着这个数字是素数,因为循环中没有一个值满足将标志值设置为1的if条件。
import math
x = int(input())
i = 2
flag = 0
while i<math.sqrt(x):
if x%i == 0:
flag+=1
break
i+=1
if flag == 0 :
print("Prime")
else:
print("Not Prime")
问题是,您只是碰巧得到了这个测试用例的正确输出,而您的算法实际上并没有检查一个数字是否为素数。
你应该考虑:
msgstr"如果一个数大于1,并且除了1和数本身之外没有其他的正除数,那么它就是素数"
您的代码应该看起来像这样才能工作:
def checkPrime(x):
if x > 1:
for j in range(2, int(x / 2) + 1):
if (x % j) == 0:
print("no")
return
print("yes")
else:
print("no")
t=int(input())
for i in range(t):
x=int(input())
checkPrime(x)
那个算法并没有检查这个数是否是素数。
你应该使用一些众所周知的算法。
def is_prime(n: int) -> bool:
"""Primality test using 6k+-1 optimization."""
if n <= 3:
return n > 1
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i ** 2 <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
这是一个我甚至无法在我们的测试环境中重现的错误——到目前为止,它只发生在生产环境中,需要运行一段时间才能发生(重启一段时间后就可以了)。 在打印PDF文件时,上述异常被抛出,在打印机队列中,我可以看到作业挂在错误状态。让我有点困扰的是,我打印的文件大小约为40 kb,打印队列显示它们约为1.4 MB,但也许这是正常的,我不知道。无论如何,我读了一两件关于这个异常的事情,但是有些事情不太对——应用程
问题内容: 我如何在arraylist“列表”中打印元素“ e”? 问题答案: 您是要打印整个列表还是要遍历列表的每个元素?两种打印您的类有意义的东西的方法都需要重写该类的方法(如其他答案所述)以返回有效结果。 此代码的输出是:
问题内容: Java中有一种简单的方法可以执行以下操作吗? 连接到打印机(将是本地打印机,并且是连接到机器的唯一打印机)。 在2个不同的打印机纸盘中打印2页的页面。 获取当前的打印队列计数,即我有100项要打印的项目和34项当前已打印,则打印机队列现在应显示为66。 问题答案: 一些快速提示: 从Java打印:请参阅基本打印程序 打印作业的状态:您可以使用PrintJobListener获得一些有
在我们的android应用程序中,我们可以成功地将图像打印到P4T打印机。我们使用pcx cpcl命令与其他收据文本内联打印图像。在打印收据之前,我们使用zebra sdk将图像上传到打印机内存。我们让zebra首先将我们的位图转换为ZebraImage,然后上传它。在P4T上,这会产生一个。然后我们在cpcl标签中引用的PCX文件。示例: 打印机配置: 在android应用程序中: cpcl格式
本文向大家介绍打印HTML5画布元素,包括了打印HTML5画布元素的使用技巧和注意事项,需要的朋友参考一下 以下是显示HTML5 canvas元素的代码段。 canvas_voucher是canvas元素的ID。要使此功能正常运行,我们需要将canvas转换为.png图片网址,然后在新的浏览器窗口中将其打开。触发“打印”对话框,使用户可以打印页面。
家庭作业:寻找更好的策略或方法,而不是完整的代码。 当我试图确定这个问题的递归情况时,我完全被弄糊涂了。我必须编写一个接受整数参数“n”的方法,然后输出总共“n”个字符。根据原始整数是奇数还是偶数,中间字符应始终为“”或“*”。下面是两个不同的方法调用和输出应该是什么样子: 我该如何识别递归案例呢?