Safe primes and unsafe primes: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 1,838:
There are 30657 safes and 633922 unsafes below 10000000.
 
</pre>
 
=={{header|Shale}}==
<lang Shale>#!/usr/local/bin/shale
 
// Safe and unsafe primes.
//
// Safe prime p: (p - 1) / 2 is prime
// Unsafe prime: any prime that is not a safe prime
 
primes library
 
init dup var {
pl sieve type primes::()
10000000 0 pl generate primes::()
} =
 
isSafe dup var {
1 - 2 / pl isprime primes::()
} =
 
comma dup var {
n dup var swap =
t dup var n 1000 / =
b dup var n 1000 % =
 
t 0 == {
b print
} {
t.value comma() b ",%03d" printf
} if
} =
 
go dup var {
n var
c1 var
c10 var
i var
p var
 
"The first 35 safe primes are:" print
n 0 =
c1 0 =
c10 0 =
i 0 =
{ i count pl:: < } {
p i pl get primes::() =
p isSafe() {
n 35 < {
p " %d" printf
n++
n 35 == { "" println } ifthen
} ifthen
 
p 1000000 < { c1++ } ifthen
 
c10++
} ifthen
 
i++
} while
"Number of safe primes below 1,000,000 is " print c1.value comma() "" println
"Number of safe primes below 10,000,000 is " print c10.value comma() "" println
 
"The first 40 unsafe primes are:" print
n 0 =
c1 0 =
c10 0 =
i 0 =
{ i count pl:: < } {
p i pl get primes::() =
p isSafe() not {
n 40 < {
p " %d" printf
n++
n 40 == { "" println } ifthen
} ifthen
 
p 1000000 < { c1++ } ifthen
 
c10++
} ifthen
 
i++
} while
"Number of unsafe primes below 1,000,000 is " print c1.value comma() "" println
"Number of unsafe primes below 10,000,000 is " print c10.value comma() "" println
} =
 
init()
go()
</lang>
 
{{out}}
 
<pre>The first 35 safe primes are: 5 7 11 23 47 59 83 107 167 179 227 263 347 359 383 467 479 503 563 587 719 839 863 887 983 1019 1187 1283 1307 1319 1367 1439 1487 1523 1619
Number of safe primes below 1,000,000 is 4,324
Number of safe primes below 10,000,000 is 30,657
The first 40 unsafe primes are: 2 3 13 17 19 29 31 37 41 43 53 61 67 71 73 79 89 97 101 103 109 113 127 131 137 139 149 151 157 163 173 181 191 193 197 199 211 223 229 233
Number of unsafe primes below 1,000,000 is 74,174
Number of unsafe primes below 10,000,000 is 633,922
</pre>
 
Line 2,109 ⟶ 2,210:
But, who cares, these days ;-)
<br>3) time is on a 2012 MacBook 2.5Ghz i5; interpreted not jitted. Compiled/jitted time is 738ms.
 
=={{header|Shale}}==
<lang Shale>#!/usr/local/bin/shale
 
// Safe and unsafe primes.
//
// Safe prime p: (p - 1) / 2 is prime
// Unsafe prime: any prime that is not a safe prime
 
primes library
 
init dup var {
pl sieve type primes::()
10000000 0 pl generate primes::()
} =
 
isSafe dup var {
1 - 2 / pl isprime primes::()
} =
 
comma dup var {
n dup var swap =
t dup var n 1000 / =
b dup var n 1000 % =
 
t 0 == {
b print
} {
t.value comma() b ",%03d" printf
} if
} =
 
go dup var {
n var
c1 var
c10 var
i var
p var
 
"The first 35 safe primes are:" print
n 0 =
c1 0 =
c10 0 =
i 0 =
{ i count pl:: < } {
p i pl get primes::() =
p isSafe() {
n 35 < {
p " %d" printf
n++
n 35 == { "" println } ifthen
} ifthen
 
p 1000000 < { c1++ } ifthen
 
c10++
} ifthen
 
i++
} while
"Number of safe primes below 1,000,000 is " print c1.value comma() "" println
"Number of safe primes below 10,000,000 is " print c10.value comma() "" println
 
"The first 40 unsafe primes are:" print
n 0 =
c1 0 =
c10 0 =
i 0 =
{ i count pl:: < } {
p i pl get primes::() =
p isSafe() not {
n 40 < {
p " %d" printf
n++
n 40 == { "" println } ifthen
} ifthen
 
p 1000000 < { c1++ } ifthen
 
c10++
} ifthen
 
i++
} while
"Number of unsafe primes below 1,000,000 is " print c1.value comma() "" println
"Number of unsafe primes below 10,000,000 is " print c10.value comma() "" println
} =
 
init()
go()
</lang>
 
{{out}}
 
<pre>The first 35 safe primes are: 5 7 11 23 47 59 83 107 167 179 227 263 347 359 383 467 479 503 563 587 719 839 863 887 983 1019 1187 1283 1307 1319 1367 1439 1487 1523 1619
Number of safe primes below 1,000,000 is 4,324
Number of safe primes below 10,000,000 is 30,657
The first 40 unsafe primes are: 2 3 13 17 19 29 31 37 41 43 53 61 67 71 73 79 89 97 101 103 109 113 127 131 137 139 149 151 157 163 173 181 191 193 197 199 211 223 229 233
Number of unsafe primes below 1,000,000 is 74,174
Number of unsafe primes below 10,000,000 is 633,922
</pre>
 
=={{header|Swift}}==