急!请大家帮忙这道算法题!
总共三个问题。我用 Swift 完成了第一个。第二和第三请帮忙。您也可以用其它语言,请说明算法。1. 整数 1 到 500, 给出每个数所有位数平方的和。 比如 (1, 1), (2, 4),(12, 5),(500, 25);
2. 找出所有这样的数:求和的这个方法 getSumOfDigits 运行多次后 (把运行结果输进去再运算),结果是 1. 比如1, 7, 10 。。。。
3. 找出 1 到 1 千万 之间这样的数, getSumOfDigits 运行 7 次以上,结果是 89.
func getSumOfDigits(n: Int) -> Int {
let nString = String(n)
var sum: Int = 0
for char in nString {
if let charInt = Int(String(char)) {
sum += charInt * charInt
}
}
return sum
}
func questionOne() -> [(Int, Int)] {
var output: [(Int, Int)] = []
for i in 1...500 {
output.append((i, getSumOfDigits(n: i)))
}
return output
}
多谢啦!