Silnia/kod
Z Wikiźródeł, repozytorium wolnych materiałów źródłowych
< Silnia
| ←Silnia | Silnia Kod źródłowy |
||
| Poniższy krótki program napisany w języku C oblicza dokładnie wartości silni. Została przy jego pomocy wygenerowana tablica umieszczona niżej. Zwyczajne mnożenie liczb typu int nie mogło być zastosowane, gdyż wartości silni wielokrotnie przekraczają górne ograniczenie tego typu. Zwyczajne mnożenie liczb rzeczywistych nie mogło być zastosowane, gdyż wprowadzałoby niedokładność. |
#include <stdio.h> int main(void) { int cyfry[1000] = { 1 }; int n, p, w, liczba; printf("Podaj maksymalna podstawe silni\n"); scanf("%d", &liczba); printf("<table border=\"1\"><tr><th align=\"right\">n</th>" "<th align=\"left\">n!</th></tr>\n"); for (n=1; n<=liczba; n++) { printf("<tr><td align=\"right\">%2d</td><td>",n-1); for (p=999; !cyfry[p]; p--) /* NIC */; while (p>=0) printf("%c",'0'+cyfry[p--]); printf("</td></tr>\n"); for (w=0, p=0; p<1000; p++) { w += n*cyfry[p]; cyfry[p] = w % 10; w /= 10; } } printf("</table>"); return 0; }
Po uruchomieniu program generuje tablicę zawierającą kolejne wartości silni.
Spis treści |
[edytuj] Program obliczający silnię napisany w pascalu
program silnia; var a:integer; i:byte; n:longint; begin repeat writeln('Podaj podstawe silni'); readln(a); until (a >= 0); n:=1; for i:=1 to a do n:=n*i; writeln('Wynik to:',n); readln; end.
[edytuj] Common Lisp / Emacs Lisp
Rekurencyjnie:
(defun silnia(n) (if (= n 1) 1 (* n (silnia (1- n)))))
[edytuj] Python
Rekurencyjnie:
def silnia(n): if n==0: return 1 else: return n * silnia(n-1)
Iteracyjnie:
def silnia(n): for i in range(1,n): n=n*i return n
[edytuj] Program w Javie
import java.math.*; public class Silnia { public static void main (String[] arg) { BigInteger silnia = new BigInteger("1"); BigInteger n = new BigInteger(arg[0]); //Konwersja podanego argumentu do liczby całkowitej while (n.compareTo(BigInteger.ONE)>0) { silnia = silnia.multiply(n); n = n.subtract(BigInteger.ONE); } System.out.print(silnia.toString()); } }
Aby policzyć wartość na przykład 1000! piszemy w linii poleceń: java Silnia 1000

