Nie sądziłem, że ktoś korzysta z moich wypocin, a jednak... :) Jeden z czytelników bloga przygotował implementację większości dotychczas omówionych przeze mnie algorytmów, których znajomość może przydać się na maturze z informatyki. Wszystkich zainteresowanych zapraszam do zapoznania się z nimi. Autorem programów jest Robert Urbaniak.
Dzielniki liczby
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Dzielniki {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int liczba = s.nextInt();
List<Integer> dzielniki = new ArrayList<Integer>();
for(int i=2;i<liczba;i++){
if((liczba % i)==0) dzielniki.add(i); //Jeśli reszta dzielenia liczby przez i wynosi 0 to jest to dzielnik i dodajemy do list
}
System.out.println(dzielniki.toString()); //Wypisanie dzielników
}
}
Rozkład liczby na czynniki
import java.util.*;
public class Rozkładnik_liczb {
public static void main(String[] args) {
boolean pierwsza = true;
Scanner S = new Scanner(System.in); //Pobieramy liczbę którą chcemy sprawdzić
int liczba = S.nextInt(); //Zamiana na liczbę całkowitą
String podzielniki = "Liczbę " + liczba+ " możemy zapisać jako iloczyn liczb:"; //Przygotowanie odpowiedzi do której dodamy podzielniki
List<Integer> dzielniki = new ArrayList<Integer>(); //Deklarujemy listę która będzie zawierała x liczb pierwszych
for(int i=2; i<liczba ; i++){ // Wyszukanie liczb pierwszych w zakresie od 2 do n
pierwsza = true;
for(int a=2; a<i; a++){
if((i % a) == 0){
pierwsza=false;
}
}
if(pierwsza){
dzielniki.add(i);
}
}//KONIEC WYSZUKIWANIA LICZB PIERWSZYCH
Collections.sort(dzielniki, Collections.reverseOrder()); //Posortowanie dzielników od największego do najmniejszego
while(liczba!=1){//Dzielenie przez liczby pierwsze
for(int b=0; b<dzielniki.size();b++){
if((liczba % dzielniki.get(b))== 0){
liczba = liczba/dzielniki.get(b);
podzielniki += " "+ dzielniki.get(b)+ ",";
}
}
}
System.out.println(podzielniki);
}
}
Liczby pierwsze
import java.util.Scanner;
public class Pierwsze {
public static void main(String[] args) {
Scanner n = new Scanner(System.in); // Pobieramy z konsoli liczbę którą chcemy sprawdzić
int liczba = n.nextInt() ; //Scanner pobiera plik typu STRING dlatego używamy metody nextInt() do zamiany na liczbę całkowitą
boolean pierwsza= true; //Zakładamy pierwotnie, że jest pierwszą
for(int i=2; i<liczba; i++){ //Sprawdzamy dla każdej liczby od 2 do n-1 czy n jest podzielne przez nią
if((liczba % i == 0)){
pierwsza = false; //Jeśli liczbę możemy podzielić przez inną liczbę niż 1 i nią samą to NIE JEST LICZBA PIERWSZA
}
}
if(pierwsza)System.out.println("Liczba " + liczba + " Jest liczbą pierwszą");
else System.out.println("Liczba " + liczba + " Nie jest liczbą pierwszą");
}
}
Liczby doskonałe
public class Doskonała {
public static void main(String[] args) {
int liczba = 496;
int suma= 0;
int[] podzielniki = new int[liczba+1];
for(int i=1; i<=liczba; i++){
if((liczba % i) == 0){ //Szukanie podzielników liczby
podzielniki[i]= i;
}
}
for(int d=1; d<liczba;d++ ){ //Suma podzielników liczby
suma+=podzielniki[d];
}
if(suma==liczba)System.out.println("Liczba " + suma + " jest doskonała");
else System.out.println("Liczba " + liczba + " nie jest doskonała");
}
}
Sito Eratostenesa
import java.util.*;
public class Szukaj_Liczb_Pierwszych {
public static void main(String[] args) {
int Liczba =523; //Liczba n do której szukamy liczb pierwszych
boolean pierwsza=true;
List<Integer> pierwsze= new ArrayList<Integer>(); // Lista liczb pierwszych
for(int i=2;i<=523;i++){ //Sprawdzamy każdą liczbę z zasięgu od 2 do n(liczba)
pierwsza=true; //Zakładamy, że jest pierwszą
for(int a=2;a<i;a++){
if((i% a)==0) pierwsza=false; //sprawdzamy czy kolejna liczba jest liczbą pierwszą, sprawdzamy czy ma podzielniki jeśli tak to ustawiamy pierwsza=false
}
if(pierwsza) pierwsze.add(i); //Jeśli pierwsza=true to dodajemy do spisu pierwszych
}
System.out.println(pierwsze.toString()); //Wypisujemy liczby pierwsze
}
}
Największy wspólny dzielnik
import java.util.*;
public class NWD {
public static void main(String[] args){
int a = 999;
int b = 81;
String odp = "NWD liczb: " + a+ " i " + b + " wynosi: ";
int c;
while(b!=0){ //Dopóki reszta dzielenia przez liczby a i b nie będzie 0 to
c = a % b; //Obliczenie reszty
a = b; //Zamiana dzielnej z dzielnikiem
b = c;//Zamiana dzielnika z resztą
}
System.out.println(odp +a);
//Aby obliczyć NWW wystarczy użyć takiej formuły:
//NWW=Pierwsza_liczba*Druga_liczba/NWD
}
}
Konwersja pomiędzy systemem binarny, a dziesiętnym
import java.util.*;
public class Konwersja {
public static void main(String[] args){
String binarna =new String("101110111");
int dec =0;
int potęga = 1;
for(int i=binarna.length();i>=1;i--){ //Istotne jest, że i sprawdzamy od końca
if(binarna.charAt(i-1)=='1'){ //Metoda charAt pobiera nam jeden znak o danym indexie ze stringa
dec = dec + (1*potęga);
System.out.println(dec);
}
potęga=potęga*2;
}
System.out.println("Liczba dziesiętna to: "+dec);
}
}
Potęgowanie
public class Potęga {
public static void main(String[] args) {
int wykładnik =2;
int potęga = 8;
int suma=1;
for(int i=1; i<=potęga;i++){
suma=suma*wykładnik;
}
System.out.println(suma);
}
}
Sortowanie bąbelkowe
public class Bąbelkowe {
public static void main(String[] args){
int[] tab = {5,4,3,1,6,2,3,5,1,2};
int zmiany= 1;
int próba;
int pomoc;
while(zmiany!=0){ //Póki ani razu nie przestawimy liczb będzie działać
próba=0;
zmiany=0;
while(próba!=tab.length-1){ //Próba przestawienia dla każdego indexu
if(tab[próba]<tab[próba+1]){
zmiany++;
pomoc = tab[próba];
tab[próba] = tab[próba+1]; //Jeśli index n jest mniejszy od n+1 to zamień n i n+1
tab[próba+1]= pomoc;
}
próba++;
}
}
for(int i=0; i<tab.length;i++){
System.out.print(tab[i]+ " "); //wypisuje tablicę
}
}
}
Silnia
public class Silnia {
public static void main(String[] args) {
int silnia = 3;
int suma = 1;
for(int i=2;i<=silnia;i++){
suma=suma*i;
}
System.out.println("Silnia z liczby: "+ silnia+ " wynosi " + suma);
}
}
Anagramy
public class Anagramy {
public static void main(String[] args) {
String pierwsza = new String("masło"); //Deklaracja pierwszego słowa
String druga = "słoma"; //Deklaracja drugiego słowa
boolean anagram = true; //Założenie, że jest anagramem
for(int i=0; i<pierwsza.length();i++){
if(druga.indexOf(pierwsza.charAt(i))==-1){
anagram = false;
}
}
if(anagram){
System.out.println("Jest");
}else System.out.println("nie jest");
}
}
Palindromy
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Palindrom {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Ave\\Desktop\\Dane_PR2\\palindrom.txt")); //Przykładowa ścieżka pliku UWAGA: ZAWSZE STAWIAĆ 2x \\
String line;
boolean pali;
while((line=br.readLine())!=null){
String palindro = new String(line);
String palindrom = palindro.replace(" ", "");
pali = true;
for(int i=0;i<(int)Math.floor(palindrom.length()/2);i++){
if(Character.toLowerCase(palindrom.charAt(i))!=Character.toLowerCase(palindrom.charAt(palindrom.length()-(i+1)))){
pali=false;
}
}
if(pali){
System.out.println("Słowo: "+ palindrom + " - jest palindronem");
}else{
System.out.println("Słowo: "+ palindrom + " - nie jest palindronem");
}
}
}
}





