Prime words: Difference between revisions
Content added Content deleted
m (→{{header|Wren}}: Wren-trait -> Wren-iterate) |
No edit summary |
||
Line 406: | Line 406: | ||
33: me 34: meek 35: meg 36: q |
33: me 34: meek 35: meg 36: q |
||
</pre> |
</pre> |
||
=={{header|Delphi}}== |
|||
{{works with|Delphi|6.0}} |
|||
{{libheader|SysUtils,StdCtrls}} |
|||
<syntaxhighlight lang="Delphi"> |
|||
function IsPrime(N: int64): boolean; |
|||
{Fast, optimised prime test} |
|||
var I,Stop: int64; |
|||
begin |
|||
if (N = 2) or (N=3) then Result:=true |
|||
else if (n <= 1) or ((n mod 2) = 0) or ((n mod 3) = 0) then Result:= false |
|||
else |
|||
begin |
|||
I:=5; |
|||
Stop:=Trunc(sqrt(N+0.0)); |
|||
Result:=False; |
|||
while I<=Stop do |
|||
begin |
|||
if ((N mod I) = 0) or ((N mod (I + 2)) = 0) then exit; |
|||
Inc(I,6); |
|||
end; |
|||
Result:=True; |
|||
end; |
|||
end; |
|||
procedure ShowPrimeWords(Memo: TMemo); |
|||
var I,N,Sum,Cnt: integer; |
|||
var NS,S: string; |
|||
function IsPrimeWord(S: string): boolean; |
|||
var I: integer; |
|||
begin |
|||
Result:=False; |
|||
for I:=1 to Length(S) do |
|||
if not IsPrime(byte(S[I])) then exit; |
|||
Result:=True; |
|||
end; |
|||
begin |
|||
Cnt:=0; |
|||
S:=''; |
|||
{Iterate all entries in dictionary} |
|||
for I:=0 to UnixDict.Count-1 do |
|||
if IsPrimeWord(UnixDict[I]) then |
|||
begin |
|||
Inc(Cnt); |
|||
Memo.Lines.Add(UnixDict[I]); |
|||
end; |
|||
Memo.Lines.Add('Count = '+IntToStr(Cnt)); |
|||
end; |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
a |
|||
aaa |
|||
age |
|||
agee |
|||
ak |
|||
am |
|||
ama |
|||
e |
|||
egg |
|||
eke |
|||
em |
|||
emma |
|||
g |
|||
ga |
|||
gag |
|||
gage |
|||
gam |
|||
game |
|||
gamma |
|||
ge |
|||
gee |
|||
gem |
|||
gemma |
|||
gm |
|||
k |
|||
keg |
|||
m |
|||
ma |
|||
mae |
|||
magma |
|||
make |
|||
mamma |
|||
me |
|||
meek |
|||
meg |
|||
q |
|||
Count = 36 |
|||
Elapsed Time: 72.759 ms. |
|||
</pre> |
|||
=={{header|Factor}}== |
=={{header|Factor}}== |