我写了下面的代码,应该检查列表中的数字是否是素数,但是有一个问题我无法通过,因为我正在尝试实现检查的优化num的平方根,我有一个类型错误。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.12.0.min.js"></script>
</head>
<body>
<table width="100%">
<td>Bitstamp</td>
<?php
$url = "https://www.bitstamp.net/api/ticker/";
$fgc = file_get_contents($url);
$json = json_decode($fgc, true);
$price = $json["last"];
?>
<td><?php echo $price; ?></td>
</table>
</body>
</html>
def is_prime(x):
if x <= 1:
return False
if x == 2:
return True
for n in range(3, x**(0.5)+1, 2): # this skips even numbers and only checks up to sqrt(x)
if x % n == 0:
return False
return True
my_list = [1,2,4,5,6,7]
result = list(map(is_prime,my_list))
print(result)
答案 0 :(得分:4)
x**(0.5)+1
不是整数,因此range
无法生成列表。
尝试四舍五入:
from math import ceil
def is_prime(x):
if x <= 1:
return False
if x == 2:
return True
for n in range(3, ceil(x**(0.5)), 2): # this skips even numbers and only checks up to sqrt(x)
if x % n == 0:
return False
return True
my_list = [1,2,4,5,6,7]
result = list(map(is_prime,my_list))
print(result)
答案 1 :(得分:0)
表达式:
range(3, x**(0.5)+1, 2):
由于,升级为浮点类型
x**(0.5)
对于您想要的行为,您需要再次将其设为int,请尝试:
range(3, int(round(x**(0.5)+1)), 2):
其中
int(x)
告诉python你想把x解释为整数类型
和
round(x)
将最接近的整数返回给x。
请注意,舍入可能不是您所期望的:
答案 2 :(得分:0)