出于教育目的,将vb.net代码转换为python。未出现数值的输出
我的日常工作主要是用vb.net编程,所以我对它非常熟悉。在做我的前几十个项目euler问题时,我使用vb.net只是为了掌握问题的诀窍。现在我想使用ProjectEuler来帮助我学习一种新的语言,并且已经在python中运行了一些。然而。我遇到了困难 以下代码将打印给定数字的最大素数因子:出于教育目的,将vb.net代码转换为python。未出现数值的输出,python,vb.net,Python,Vb.net,我的日常工作主要是用vb.net编程,所以我对它非常熟悉。在做我的前几十个项目euler问题时,我使用vb.net只是为了掌握问题的诀窍。现在我想使用ProjectEuler来帮助我学习一种新的语言,并且已经在python中运行了一些。然而。我遇到了困难 以下代码将打印给定数字的最大素数因子: Protected Function isPrime(ByVal n As Long) As Boolean If n = 2 Then Return True End I
Protected Function isPrime(ByVal n As Long) As Boolean
If n = 2 Then
Return True
End If
If n Mod 2 = 0 Then
Return False
End If
Dim maxFactor As Long = Math.Sqrt(n)
Dim i As Integer = 3
While i <= maxFactor
If n Mod i = 0 Then
Return False
End If
i = i + 2
End While
Return True
End Function
Protected Sub LargestPrimeFactor(ByVal n As Long)
Dim factor As Long = Math.Sqrt(n) ''#largest factor of n will be sqrt(n)
While factor > 2
If (n Mod factor) = 0 Then
If isPrime(factor) Then
Me.lblAnswer.Text = factor
factor = 0
End If
End If
factor = factor - 1
End While
End Sub
受保护函数isPrime(ByVal n长度)为布尔值
如果n=2,则
返回真值
如果结束
如果n Mod 2=0,则
返回错误
如果结束
Dim maxFactor As Long=Math.Sqrt(n)
尺寸i为整数=3
而我2
如果(n模系数)=0,则
如果是优先(因子),那么
Me.lblAnswer.Text=系数
系数=0
如果结束
如果结束
系数=系数-1
结束时
端接头
此vb.net代码运行良好。我认为python中的等价物是:
from math import sqrt
def IsPrime(n):
if n==2: return true
if not n % 2: return false
maxFactor = sqrt(n)
i = 3
while i <= maxFactor:
if not n % i: return false
i += 2
return true
n = 600851475143
factor = sqrt(n)
while factor > 2:
if not n % factor:
if IsPrime(factor):
print factor
factor = 0
factor -= 1
从数学导入sqrt
def iPrime(n):
如果n==2:返回true
如果不是n%2:返回false
maxFactor=sqrt(n)
i=3
而我2:
如果不是n%,系数:
如果是iPrime(因子):
打印因子
系数=0
系数-=1
然而,这一因素永远不会以印刷而告终。我是否错过了python的细微差别?我哪里会出错?谢谢:)以前的解决方案产生了错误的答案
from math import sqrt
def IsPrime(n):
if n==2: return True
if n % 2 == 0: return False
maxFactor = long(sqrt(n))
i = 3
while i <= maxFactor:
if n % i == 0: return False
i += 2
return True
n = 600851475143
factor = long(sqrt(n))
while factor > 2:
if n % factor == 0:
if IsPrime(factor):
print factor
factor = 0
factor -= 1
从数学导入sqrt
def iPrime(n):
如果n==2:返回True
如果n%2==0:返回False
maxFactor=长(sqrt(n))
i=3
而我2:
如果n%系数==0:
如果是iPrime(因子):
打印因子
系数=0
系数-=1
非常感谢!我的失败是错误的!=错误问题和sqrt解析为不同于我预期的类型。