Jeder in seiner Lieblingssprache

squeaker

Erfahrenes Mitglied
Ein kleiner programming-contest. Jeder in seiner Lieblingssprache:

100! ausrechnen - aber bitte vollständig und nicht Näherungsweise.

Wer will kann ja den source-code posten.
 
ich verstehe zwar nicht ganz was das mit Fun-Forum zu tun hat, aber was solls.

Code:
<html>
<head>
<title>Fakultät von hundert</title>
<script language="JavaScript">
var m=1
for(var i=1;i<=100;i++)
m=m*i;
document.write('Die Fakultät von 100 ist ' + m + ' .');
</script>
</head>
<body>
</body>
</html>

Ist zwar hässliches JavaScript, aber ich kann nichts anderes. Weiß auch net ob das dem sinn(wenn es überhaupt einen gibt) der Aufgabenstellung ist , da es mit 10^157 oder so angezeigt wird.
 
Code:
def fak(n):
    ergeb = n
    b = 1.0
    while b < n:
        ergeb *= (n-b)
        b += 1
    print ergeb

So, das war Python. Achtung: Einrückungen beachten!
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Jeder in seiner Lieblingssprache

...Java :)

Code:
import java.math.BigInteger;
/*
 * Created on 03.06.2004
 */

/**
 * @author Administrator
 */
public class Fak {

	public static void main(String[] args) {
		Fak fak = new Fak();
		String factorial = fak.calc(100);
		System.out.println(factorial);
	}
	
	/**
	 * @param i
	 * @return
	 */
	private String calc(int i) {
		int n = 1;
		BigInteger bigIntFactor =BigInteger.ONE;
		while (++n <= i) {
			bigIntFactor = bigIntFactor.multiply(new BigInteger("" + n));
		}
		return bigIntFactor.toString();
	}
}

Code:
Ausgabe:
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

Gruß Tom
 
Perl
Code:
#!/usr/bin/perl
use strict;
use warnings;

sub fac {
    my $in = shift;
    if ($in < 2) {
        return $in;
    }
    return ($in * fac($in - 1));
}

print fac(100);
 
Menschliches Gehirn:

1*2*3*4*5*6*7*8*9*10*11*12*13*14*15*16*17*......*95*96*97*98*99*100 = ...ach ich geh pennen *g*
 
Smalltalk

100 factorial.

Geht tatsächlich so einfach. Danke für eure Beiträge. Ich muss mal schauen, vielleicht raffe ich mich zu einer ASM-Version in BCD auf.
 
Nagut wenn das niemand anders in PHP machen will:

PHP:
<?php
 $n;
 $m = 1;
   do {
     $n++;
     $m = $n*$m;
   } while($n<100);
 echo $m;
?>

Code:
Ausgabe: 9.3326215443944E+157

MfG. Leever
 
Zuletzt bearbeitet von einem Moderator:
Dann mach ich das mal in Ruby. :)

Iterative Methode in einem Shellaufruf:
Code:
ruby -e "erg = 1; 100.downto(1) { |n| erg *= n }; puts erg"
Okay, sind eigentlich drei Anweisungen, aber den Einzeiler kriegt man besser in einen Shellaufruf. ;)

Rekursive Methode als eigenständiges Skript:
Code:
#!/usr/bin/env ruby
def fac(n)
  return n if n == 1
  fac(n-1)*n
end
puts fac(100)

Beide Varianten dürften sich aber noch weiter kürzen lassen, denk ich. :)

Noch eine Fassung für die ganz faulen Leute: :-)
Code:
#!/usr/bin/env ruby
class Integer
  def factorial
    return 1 if self == 0
    f = 1
    n = self
    while n>0
      f *= n
      n -= 1
    end
    return f
  end
end

puts 100.factorial
 
Zurück