diff --git a/Makefile b/Makefile index 2ea49ce..3240ee8 100644 --- a/Makefile +++ b/Makefile @@ -3,4 +3,4 @@ default: ./autoTest.pl clean: - rm -f *.txt primesc primescpp primesaltc primes.class primespas primes*.exe primes.o primesobjc primes.ali primesada primesfor primese primes.h primes1.c primes1.o primes.id primes.make primescbl link.res ppas.sh primes.beam primesocaml primesasm primes.cmi primes.cmx luac.out primeshs primes_clisp.fas primes.lib Main.hi primes_clisp.lib primes_clisp.o primes.hi primescsieve gst.im primesalt2c primesalt3c primesgo primesrs + rm -f *.txt primesgcc primesclang primescpp primesaltc primes.class primespas primes*.exe primes.o primesobjc primes.ali primesada primesfor primese primes.h primes1.c primes1.o primes.id primes.make primescbl link.res ppas.sh primes.beam primesocaml primesasm primes.cmi primes.cmx luac.out primeshs primes_clisp.fas primes.lib Main.hi primes_clisp.lib primes_clisp.o primes.hi primescsieve gst.im primesalt2c primesalt3c primesgo primesrs diff --git a/README b/README index 4bd1f0b..ed664bb 100644 --- a/README +++ b/README @@ -5,6 +5,10 @@ Mindstab.net Multi language prime number project: Prime number finders in ~40 languages and a test driver +2023: added dart. updateed python to python3. Added run params to results.txt + +2020: added rust. Tweak ruby support for newer interpreter + 2014: added go 2013: Cleanedup and small additions diff --git a/autoTest.pl b/autoTest.pl index 5427ad7..5419636 100755 --- a/autoTest.pl +++ b/autoTest.pl @@ -12,10 +12,10 @@ $os = `uname`; $debug=0; -@langs = ("c", +@langs = ("cgcc", "cclang", # Uncomment for alternat C algorithms # "c2", "ca", "ca2", "ca3", - "objc", "cpp", "asm", "for", "pas", "go", "rs", "ada", "hs", "e", "cbl", "oml", "java", "scala", "cs", "vb", "erl", "awk", "pl", "php", "py", "tcl", "rb", "cl", "scm", "st", "sml", "4th", "pro", "m3", "pike", "lua", "rexx", "r", "fe", "5c", "m4", "sh"); + "objc", "cpp", "asm", "for", "pas", "go", "rs", "ada", "hs", "e", "cbl", "oml", "java", "scala", "cs", "vb", "erl", "awk", "pl", "php", "py", "tcl", "rb", "dart", "cl", "scm", "st", "sml", "4th", "pro", "m3", "pike", "lua", "rexx", "r", "fe", "5c", "m4", "sh"); $llen = $#langs+1; @@ -25,19 +25,25 @@ chomp($itr); print "\n"; if($itr < 1) { $itr = 3; } -print "Maximun number to search to [100000]: "; +print "Maximun number to search to [1000000]: "; $max = ; chomp($max); print "\n"; -if($max < 1) { $max = 100000; } +if($max < 1) { $max = 1000000; } #sources -$data{'c'}{'name'} = "C"; -$data{'c'}{'src'}= "primes.c"; -$data{'c'}{'prog'} = "primesc"; -$data{'c'}{'compiler0'} = "gcc"; -$data{'c'}{'cflags0'} = "-lm -O3 -o " . $data{'c'}{'prog'}; +$data{'cgcc'}{'name'} = "C (gcc)"; +$data{'cgcc'}{'src'}= "primes.c"; +$data{'cgcc'}{'prog'} = "primesgcc"; +$data{'cgcc'}{'compiler0'} = "gcc"; +$data{'cgcc'}{'cflags0'} = "-lm -O3 -o " . $data{'cgcc'}{'prog'}; + +$data{'cclang'}{'name'} = "C (clang)"; +$data{'cclang'}{'src'}= "primes.c"; +$data{'cclang'}{'prog'} = "primesclang"; +$data{'cclang'}{'compiler0'} = "clang"; +$data{'cclang'}{'cflags0'} = "-lm -O3 -o " . $data{'cclang'}{'prog'}; $data{'c2'}{'name'} = "C Sieve"; $data{'c2'}{'src'}= "primes.sieve.c"; @@ -230,6 +236,10 @@ $data{'pl'}{'name'} = "PERL"; $data{'pl'}{'prog'} = "primes.perl.pl"; $data{'pl'}{'interp0'} = "perl"; +$data{'dart'}{'name'} = "Dart"; +$data{'dart'}{'prog'} = "primes.dart"; +$data{'dart'}{'interp0'} = "dart"; + $data{'5c'}{'name'} = "Nickle"; $data{'5c'}{'prog'} = "primes.5c"; $data{'5c'}{'interp0'} = "nickle"; @@ -291,7 +301,7 @@ $data{'hs'}{'compiler1'} = "interpB"; $data{'py'}{'name'} = "Python"; $data{'py'}{'prog'} = "primes.py"; -$data{'py'}{'interp0'} = "python"; +$data{'py'}{'interp0'} = "python3"; $data{'php'}{'name'} = "PHP"; $data{'php'}{'prog'} = "primes.php"; @@ -459,7 +469,10 @@ open(results, ">".$RESULTS) || die("Cannot open $RESULTS\n"); print results "Prime number benchmarks\n"; $mach = `uname -a`; -print results "Benchmark machine: " . $mach."\n"; +print results "Benchmark machine: " . $mach; + +print results "Iterations: " . $itr . "\n"; +print results "Max number searched to: " . $max . "\n\n"; # TESTS @@ -574,10 +587,10 @@ foreach $l (@langs) if(length($compiler) < 5) {print results "\t";} if($data{$l}{"cflagspre$cp"}) { $cmd .= $data{$l}{"cflagspre$cp"};} $cmd .= "$comp "; - # So gcc stoped compiling if teh linking was done before the soruce file was specified + # So gcc stoped compiling if thh linking was done before the soruce file was specified # go figure $gcc_code = 0; - if ($l =~ /^o?b?j?ca?[23]?$/) { + if ($l =~ /^o?b?j?ca?[23]?(gcc)?$/) { $gcc_code = 1; } diff --git a/primes.dart b/primes.dart new file mode 100644 index 0000000..38f7380 --- /dev/null +++ b/primes.dart @@ -0,0 +1,24 @@ +import 'dart:math'; + +void main(List args) { + if (args.length < 1) { + print("USAGE: dart primes.dart "); + return; + } + + var max = int.parse(args[0]); + + for (var i = 3; i <= max; i += 2) { + var cap = sqrt(i); + var isPrime = true; + for (var j = 3; j <= cap; j += 2) { + if (i % j == 0) { + isPrime = false; + break; + } + } + if (isPrime) { + print(i); + } + } +} diff --git a/primes.py b/primes.py index 555a784..766d4eb 100755 --- a/primes.py +++ b/primes.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Python version of a Prime Number Finder # haplo@mindstab.net @@ -7,11 +7,11 @@ import math try: max = int(sys.argv[1]); except: - print "primes.py " + print("primes.py ") sys.exit() if max < 1: - print "Invalide MAX NUM" + print("Invalide MAX NUM") sys.exit() for cnt in range(3, max, 2) : @@ -23,5 +23,5 @@ for cnt in range(3, max, 2) : break if isPrime != 0 : - print cnt + print(cnt)