请参阅Python代码,在给定的两个数字下部和上部之间查找质数:
lower = 3
upper = 15
print("Prime numbers between", lower, "and", upper, "are:")
for num in range(lower, upper + 1):
for i in range(2, num):
if (num % i) == 0:
break
else:
print(num)
Python输出:
Prime numbers between 3 and 15 are:
3
5
7
11
13
几乎相似的代码在朱莉娅给出不正确的输出。请参阅下面的Julia代码:
lower = 3
upper = 15
println("Prime numbers between ", lower, " and “, upper, " are:”)
for num in lower:upper
for i in 2: num-1
if (num % i) == 0
break
else
println(num)
break
end
end
end
Julia输出:
Prime numbers between 3 and 15 are:
3
5
7
9
11
13
15
显然,9和15不是质数。为什么Python代码给出正确的输出,而Julia代码没有。有没有办法用同样的算法逻辑来解决它?
您的Julia代码似乎在内部打印,并打破了因子检查循环,而不是等待所有因子都得到验证。(我不认识朱莉娅,但这似乎是一个明显的区别)。
这是我将使用的代码,保持相同的算法逻辑每个您的请求(我这样写这段代码,因为循环内的条件不仅有效,而且读起来很自然:任何数字从范围2: num-1
划分num
或printnum
):
julia> lower = 3
3
julia> upper = 15
15
julia> println("Prime numbers between $lower and $upper are:")
Prime numbers between 3 and 15 are:
julia> for num in lower:upper
any(i -> num % i == 0, 2:num-1) || println(num)
end
3
5
7
11
13
根据Julia中对您的问题的评论,您在for
循环中没有else
子句。但是,使用any
函数保持与代码相同的逻辑,因为它是一个短循环函数(实现与for循环中的break
相同的效果)。
如果我的代码中有什么不清楚的,请告诉我。
编辑:
我将重写代码来解释它是如何工作的。
首先是|
部分。它使用| |
运算符的短循环行为。因此,在第一个层次上,可以将其改写为:
julia> lower = 3
3
julia> upper = 15
15
julia> println("Prime numbers between $lower and $upper are:")
Prime numbers between 3 and 15 are:
julia> for num in lower:upper
iscomposite = any(i -> num % i == 0, 2:num-1)
if !iscomposite
println(num)
end
end
3
5
7
11
13
现在,正如注释的,任何
也在做短循环,所以它相当于写:
julia> lower = 3
3
julia> upper = 15
15
julia> println("Prime numbers between $lower and $upper are:")
Prime numbers between 3 and 15 are:
julia> for num in lower:upper
iscomposite = false
for i in 2:num-1
if num % i == 0
iscomposite = true
break
end
end
if !iscomposite
println(num)
end
end
3
5
7
11
13
我试图建立一个函数,检查一个单词或文本是否是回文。要做到这一点,它拆分文本,使每个字母都是一个新数组的元素,它去掉空白,并建立反向数组。然后检查两个数组中处于相同位置的每个元素是否相等。如果不是,则返回false,如果是,则返回true。这里的函数是: 我不知道出了什么问题,但是不管我传递给函数什么单词或文本,函数似乎都在返回一个真值。那有什么不好?
问题内容: 有人遇到过这个问题吗?假设您有两个类似以下的数组 有没有一种方法可以比较b中a中的哪些元素?例如, 我正在尝试避免循环,因为要花费数百万个元素才能解决问题。有任何想法吗? 干杯 问题答案: 实际上,有一个比以下任何一种方法更简单的解决方案: 所得的c为:
我想比较这两个函数的值。不幸的是,我试图使,但我一直得到。 我想检查如果。这就是我上面完整的代码。
问题内容: 与oracle diff 相同:如何比较两个表?除了在MySQL。 假设我有两个表t1和t2,它们的布局相同,但是可能包含不同的数据。 区分这两个表的最佳方法是什么? 更准确地说,我正在尝试找出一个简单的SQL查询,该查询告诉我t1中某一行的数据是否不同于t2中相应行的数据 看来我不能使用相交也不能减去。当我尝试 我收到错误代码: [错误代码:1064,SQL状态:42000]您的SQ
我得到了两个字符串类型arraylist。一个列表包含“book1”、“book2”、“book3”和“book4”。另一个arrayList包含“book1”、“book2”、“book3”。因此,第一个列表的大小为4,第二个列表的大小为3。我创建了另一个与第一个列表大小相等的arrayList 但是当我这样做的时候,我不能设置1,因为我不能进入if状态,有人能帮我吗
问题内容: 我得到了两个String类型的arraylist ..一个包含“ book1”,“ book2”,“ book3”和“ book4”的列表。另一个arrayList包含“ book1”,“ book2”,“ book3”。因此,第一个列表的大小为4,第二个列表的大小为3。我创建了另一个与第一个列表的大小相等的arrayList 如果两个列表之间的内容相等,那么我将设置为1而不是0。 所