Program: wczytujący liczby z pliku „liczby_pierwsze.txt” po czym zlicza ilość liczb pierwszych i zapisuje je w pliku „output.txt”.
Wykorzystane dane wejściowe:
12
237
32
62
1
2
7
23
49
Dane wyjściowe:
1
49
Znaleziono 2 liczb pierwszych.
Kompilator: Eclipse
Kod programu:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class glowna {
//Program wczytujący dane z pliku oraz zliczający ilość liczb
//pierwszych po czym zapisuje do drugiego pliku.
public static boolean pierwsza(long n){
if(n%2==0)
if(n==2) return true;
else return false;
for(int i=3;i<=Math.sqrt(n);i+=2){
if(n%i==0) return false;
}
return true;
}
public static boolean czyK(long n){
if (Math.sqrt(n)!=(long)Math.sqrt(n)) return false;
long k=(long) Math.sqrt(n);
if (pierwsza(k)) return true;
else return false;
}
public static void main(String[] args) {
try{
File pliki = new File("output.txt");
pliki.createNewFile();
FileReader we = new FileReader("liczby_pierwsze.txt");
BufferedReader buforWe = new BufferedReader(we);
FileWriter wy = new FileWriter("output.txt");
BufferedWriter buforWy = new BufferedWriter(wy);
String linia;
int ile=0;
while((linia = buforWe.readLine())!=null){
if(czyK(Long.parseLong(linia))){
buforWy.write(linia);
buforWy.newLine();
ile++;
}
}
buforWy.write("Znaleziono "+ile+" liczb pierwszych.");
buforWy.close();
buforWe.close();
}catch(IOException ex){
System.out.print("Błąd: "+ex);
}
}
} Słowniczek pojęć:
Liczba naturalna, która ma dokładnie dwa dzielniki naturalne: jedynkę i siebie samą, np. 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, tp.