我需要编写一个函数is_prime
,以确定n
是否为质数,否则,我必须显示以最小可能因子开头的因子。
它可以工作,但是我需要在输出中排除引号,否则我的功课不会得到任何奖励。
def is_prime(n):
pass
if n > 1:
for i in range(2,n):
if (n % i) == 0:
return(n,'is not a prime number', '(', i,'*',n//i,'=', n, ')')
break
else:
return(n,'is prime')
else:
return(n,'is not a prime number')
print(is_prime(12))
答案 0 :(得分:0)
您的问题是,当您应返回字符串时,您正在返回列表,应使用str.format()返回字符串:
https://www.digitalocean.com/community/tutorials/how-to-use-string-formatters-in-python-3
此外,您不需要“ break”或“ else”,因为在执行return语句时,函数结束。
因此,如果找到n的除数,则进入return语句,之后的代码将不会执行。
def is_prime(n):
if n > 1:
for i in range(2, n):
if (n % i) == 0:
return('{n} is not a prime number ({i} * {q} = {n})'.format(n=n, i=i, q=n//i))
return('{n} is prime'.format(n=n))
return('{n} is not a prime number'.format(n=n))
print(is_prime(15))
答案 1 :(得分:0)
不要在返回语句中使用逗号(,),而是将其替换为加号(+),然后使用str()函数将所有数字值转换为字符串。
def is_prime(n):
pass
if n > 1:
for i in range(2,n):
if (n % i) == 0:
return(str(n) + ' is not a prime number ' + '(' + str(i) + '*' +
str(n//i) + '=' + str(n) + ')')
break
else:
return(n + 'is prime')
else:
return(n + 'is not a prime number')
print(is_prime(12))