/* * Copyright (C) 2009 E.Albert, P.Arenas, S.Genaim, G.Puebla, and D.Zanardini * https://costa.ls.fi.upm.es * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package pubs; /** * A simple class with a method with a simple for loop which calls * another method with logarithmic complexity, thus resulting in * O(n * log n) complexity. * * * @author E.Albert, P.Arenas, S.Genaim, and G.Puebla * */ class EvenDigits{ static int divByTwo(int n){ int acu=0; while (n>0){ n=n/2; acu++; } return acu; } /** * Method with O(n * log n) complexity. * */ static int evenDigits(int n){ int acu=0; for (int i=0; i<n; i++){ acu=acu+divByTwo(i); } return acu; } public static void main(String[] args) { int test; int result; // First test test = 10; result = evenDigits(test); System.out.println("Result: "+result); /* // Second test test = 50; result = evenDigits(test); System.out.println("Result: "+result); // Third test test = 100; result = evenDigits(test); System.out.println("Result: "+result); */ } };