package org.mariuszgromada.math.mxparser.mathspace; import org.mariuszgromada.math.mxparser.*; public class PlayingWithRecursionPart3 { public static void main(String[] args) { /* Definicja funkcji rekurencyjnych */ Function CzyDzielnik = new Function("CzyDzielnik", "if( a>b, 0, if( n%a = 0, 1, CzyDzielnik(n, a+1, b) ) )", "n", "a", "b"); CzyDzielnik.setRecursiveMode(); Function CzyPierwsza = new Function("CzyPierwsza", "if( n<2, 0, ~CzyDzielnik(n, 2, sqrt(n)) )", "n"); CzyPierwsza.setRecursiveMode(); CzyPierwsza.addFunctions(CzyDzielnik); /* Obliczenie i wyświetlenie wartości */ mXparser.consolePrintln( "CzyPierwsza(1) = " + CzyPierwsza.calculate(1) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(2) = " + CzyPierwsza.calculate(2) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(3) = " + CzyPierwsza.calculate(3) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(4) = " + CzyPierwsza.calculate(4) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(5) = " + CzyPierwsza.calculate(5) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(6) = " + CzyPierwsza.calculate(6) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(7) = " + CzyPierwsza.calculate(7) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(8) = " + CzyPierwsza.calculate(8) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(9) = " + CzyPierwsza.calculate(9) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); mXparser.consolePrintln( "CzyPierwsza(10) = " + CzyPierwsza.calculate(10) + ", czas oblicz. = " + CzyPierwsza.getComputingTime() + " s." ); /* Definicja wyrażenia sumującego wynik funkcji CzyPierwsza */ Expression pi100 = new Expression("sum(i, 1, 100, CzyPierwsza(i) )"); pi100.addFunctions(CzyPierwsza); /* Obliczenie i wyświetlenie wyniku */ mXparser.consolePrintln( "Liczba liczb pierwszych w przedziale (1,100) = " + pi100.calculate()); } }