python 输入一个正整数, 将这个正整数分解成质因数之积 下列代码哪里出错了?def sushu(n): if n<2: return False else: for i in range(2,int(n**0.5+1)): if n%i==0: return False return True n2=eval(input()) lst=[] lst1=[] def ji(n1): for i in range(2,n1+1): if sushu(i): lst.append(i) lst.sort() for j in range(len(lst)): if n1%lst[j]==0: lst1.append(lst[j]) n1=n1/lst[j] j+=1 result='*'.join(str(m) for m in lst1) return result print(str(n2)+'='+ji(n2))
时间: 2024-02-14 18:15:55 浏览: 27
代码中出错的地方在于变量 n1 在函数 ji 中被修改了,但是在函数外部并没有重新赋值。这会导致程序的输出结果不正确。应该在函数内部将 n1 赋予一个新的变量,而不是直接修改 n1。修改后的代码如下:
```python
def sushu(n):
if n < 2:
return False
else:
for i in range(2, int(n**0.5+1)):
if n % i == 0:
return False
return True
n2 = eval(input())
lst = []
lst1 = []
def ji(n):
n1 = n
for i in range(2, n1+1):
if sushu(i):
lst.append(i)
lst.sort()
for j in range(len(lst)):
if n1 % lst[j] == 0:
lst1.append(lst[j])
n1 = n1 / lst[j]
j += 1
result = '*'.join(str(m) for m in lst1)
return result
print(str(n2) + '=' + ji(n2))
```
相关问题
编写函数sushu()来判断一个大于等于2的正整数是否是素数,如果是返回true,不是则返回flase。输入一个正整数呢,输出大于等于n的第3小素数。python
sushu代码:
```python
def sushu(n):
if n < 2:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
```
输出大于等于n的第3小素数的代码:
```python
def third_sushu(n):
count = 0
i = n
while True:
if sushu(i):
count += 1
if count == 3:
return i
i += 1
```
请问还有什么可以帮助您的吗?
请用java来写 任意输入一个整数,判断它是否为素数。若为素数,则打印“yes”,否则打印“no”。主类名:Sushu
以下是主类名为Sushu的Java代码,用于判断输入的整数是否为素数:
```java
import java.util.Scanner;
public class Sushu {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
boolean isPrime = true;
if (num < 2) {
isPrime = false;
} else {
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
isPrime = false;
break;
}
}
}
if (isPrime) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
```
你可以将任意整数输入到控制台中,程序将会判断该数是否为素数,并输出相应的结果。
注意:该程序只能判断小于等于2的31次方减1的整数是否为素数,如果输入的数超出了这个范围,程序可能会出现错误。