Additive primes: Difference between revisions
Content deleted Content added
Added Swift solution |
|||
Line 1,133: | Line 1,133: | ||
353 359 373 379 397 401 409 421 443 449 |
353 359 373 379 397 401 409 421 443 449 |
||
461 463 467 487 |
461 463 467 487 |
||
</pre> |
|||
=={{header|Swift}}== |
|||
<lang swift>import Foundation |
|||
func isPrime(_ n: Int) -> Bool { |
|||
if n < 2 { |
|||
return false |
|||
} |
|||
if n % 2 == 0 { |
|||
return n == 2 |
|||
} |
|||
if n % 3 == 0 { |
|||
return n == 3 |
|||
} |
|||
var p = 5 |
|||
while p * p <= n { |
|||
if n % p == 0 { |
|||
return false |
|||
} |
|||
p += 2 |
|||
if n % p == 0 { |
|||
return false |
|||
} |
|||
p += 4 |
|||
} |
|||
return true |
|||
} |
|||
func digitSum(_ num: Int) -> Int { |
|||
var sum = 0 |
|||
var n = num |
|||
while n > 0 { |
|||
sum += n % 10 |
|||
n /= 10 |
|||
} |
|||
return sum |
|||
} |
|||
let limit = 500 |
|||
print("Additive primes less than \(limit):") |
|||
var count = 0 |
|||
for n in 1..<limit { |
|||
if isPrime(digitSum(n)) && isPrime(n) { |
|||
count += 1 |
|||
print(String(format: "%3d", n), terminator: count % 10 == 0 ? "\n" : " ") |
|||
} |
|||
} |
|||
print("\n\(count) additive primes found.")</lang> |
|||
{{out}} |
|||
<pre> |
|||
Additive primes less than 500: |
|||
2 3 5 7 11 23 29 41 43 47 |
|||
61 67 83 89 101 113 131 137 139 151 |
|||
157 173 179 191 193 197 199 223 227 229 |
|||
241 263 269 281 283 311 313 317 331 337 |
|||
353 359 373 379 397 401 409 421 443 449 |
|||
461 463 467 487 |
|||
54 additive primes found. |
|||
</pre> |
</pre> |
||