Skip to content

Commit

Permalink
Swift runs on Windows!
Browse files Browse the repository at this point in the history
  • Loading branch information
kreier committed Dec 24, 2023
1 parent b08caa6 commit 5486c0a
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 0 deletions.
23 changes: 23 additions & 0 deletions swift/.playground/prime.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
let lastNumber = 1000

print("We calcuate the prime numbers until", terminator: " ")
print(lastNumber)

print("2 3 5 7 11", terminator:" ")

for number in 13 ... lastNumber {
let upperBound = Int(Double(number).squareRoot())
var isPrime = 1
for divisor in 2 ... upperBound {
let quotient = Double(Double(number) / Double(divisor))
let rest = quotient - Double(Int(quotient))
//print(number, divisor, rest)
if rest == 0 {
isPrime = 0
break
}
}
if isPrime == 1 {
print(number, terminator:" ")
}
}
8 changes: 8 additions & 0 deletions swift/PrimeSwift/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.DS_Store
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc
14 changes: 14 additions & 0 deletions swift/PrimeSwift/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// swift-tools-version: 5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
name: "PrimeSwift",
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.executableTarget(
name: "PrimeSwift"),
]
)
27 changes: 27 additions & 0 deletions swift/PrimeSwift/Sources/main.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// The Swift Programming Language
// https://docs.swift.org/swift-book

let lastNumber = 1000000
var count = 4 // start from 11, know 2, 3, 5, 7
var prime = true
let clock = ContinuousClock()
let result = clock.measure {
print("We calcuate the prime numbers until", lastNumber, "\n")
// print("\n2 3 5 7", terminator:" ") // because upper limit divisor
for number in stride(from: 11, through: lastNumber, by: 2) {
prime = true
for divisor in stride(from: 3, through: Int(Double(number).squareRoot()), by: 2) {
if number % divisor == 0 {
prime = false
break
}
}
if prime {
count += 1
}
}
}
// var stopTime = NSDate()
// var interval = stopTime.timeIntervalSince(startTime as Date)
print("This calculation took", result,"seconds.")
print("I found", count, "prime numbers.")

0 comments on commit 5486c0a

Please sign in to comment.