Swift 与x27之间的差异;对于索引';和传统的';对于循环';
我不熟悉Swift,也不熟悉编程。我不确定这是否是因为现在是凌晨2:34,但有人能帮我确定这两个循环之间的区别吗 第一个循环产生了我想要的值,但使用了(正如Swift文档所解释的)一个“传统C循环”,后面的一个循环使用了似乎是Swift首选的“for index”循环(我个人喜欢,因为这对我来说更清楚),问题是这个循环返回每个数字,而不是满足条件Swift 与x27之间的差异;对于索引';和传统的';对于循环';,swift,loops,for-loop,Swift,Loops,For Loop,我不熟悉Swift,也不熟悉编程。我不确定这是否是因为现在是凌晨2:34,但有人能帮我确定这两个循环之间的区别吗 第一个循环产生了我想要的值,但使用了(正如Swift文档所解释的)一个“传统C循环”,后面的一个循环使用了似乎是Swift首选的“for index”循环(我个人喜欢,因为这对我来说更清楚),问题是这个循环返回每个数字,而不是满足条件 func findLargestPrimeFactor(number: Int) { for var i = 2; i < number
func findLargestPrimeFactor(number: Int) {
for var i = 2; i < number; i += i {
if number/i % 1 > 0 {
} else {
print(i);
}
}
}
findLargestPrimeFactor(13195);
我已经意识到我的错误是多么愚蠢,首先我不知道我为什么要做I+=I,那根本没有意义 而且,我的条件从未得到满足,因为我在真正需要浮点时声明它为Int,因为我关心余数 编辑:我又一次更新了我的代码(考虑到每个人的反馈),我感觉好了一点,并将继续研究解决方案 谢谢大家的帮助 更新代码
func findLargestPrimeFactor(number: Int) {
for i in 2...number {
var n = Float(number)
var count = Float(i)
if n/count % 1 > 0 {
print("not divisible")
} else {
print(i)
}
}
}
findLargestPrimeFactor(13195);
您的第一个函数在每次迭代时向自身添加
i
。第二个函数没有,它只是递增i
。旁注:number/i%1>0
没有意义,因为它从来都不是真的。两个函数都不计算给定数字的最大素数因子你在做什么?:)@马丁纳:你完全正确,我在提交问题时意识到了这一点,但在找到解决方案之前,我不想过早地对其进行编辑。我现在觉得自己很愚蠢(就像我提到的,已经很晚了:p)最大的区别是,c风格的迭代将在秋季3.0发布时从Swift中删除。@MartinR哦,是的,我是:)我是一个试图掌握开发的设计师!不要在循环中使用浮动。要查看一个数字是否可以被另一个数字除,只需使用(数字%i==0)。也不要使用C型循环,因为它们将在下一版本中从Swift中删除。
func findLargestPrimeFactor(number: Int) {
for i in 2...number {
var n = Float(number)
var count = Float(i)
if n/count % 1 > 0 {
print("not divisible")
} else {
print(i)
}
}
}
findLargestPrimeFactor(13195);