Ecco il codice su due file per eseguire la stampa dei numeri primi graficamente.
package disegno;
import javax.swing.*;
public class Disegno {
public static void main(String[] args) {
JFrame t= new JFrame("Grafica Iterativa");
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Tela p = new Tela();
t.add(p);
t.setSize(1800, 1000);
t.setVisible(true);
}
}
Ecco il codice di stampa
package disegno;
import java.awt.*;
import javax.swing.*;
public class Tela extends JPanel{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
this.setBackground(Color.WHITE);
g.setColor(Color.BLACK);
// questa istruzione seguente pubblica
// un rettangolo nella posizione 5,5 in alto a sx
int n=1;
String sn="";
for (int r=45;r<1000;r=r+41) { for(int i=0;i<1800;i=i+41) { if (IsPrimeFactor(n)>2||IsPrimeFactor(n)==1)
{g.setColor(Color.BLACK);
}
else
{g.setColor(Color.white);}
g.fillRect(i,r,40,40);
g.setColor(Color.black);
if (IsPrimeFactor(n)==2){
sn=Integer.toString(n);}
else{
sn=Integer.toString(IsPrimeFactor(n));
g.setColor(Color.white);}
if (IsPrimeFactor(n)>2||IsPrimeFactor(n)==1){
g.drawString(sn, i+10, r+30);
g.drawString(Integer.toString(n), i+10, r+10);}
else{ g.drawString(sn, i+10, r+15);}
n++;
}
}
}
public int IsPrime(int n)
{ int primo=1;
int fattore=2;
boolean exit=false;
if (n==1)
{exit=true;primo=0;}
while(fattore<=n/2 && !exit)
{
if (n%fattore==0)
{ primo=0;
exit=true;
}
fattore ++;
}
return primo;
}
public int IsPrimeFactor(int n){
int x=2,fattori=2;
if(n!=1){
while(x<=n/2)
{if (n%x==0)
{fattori+=1;}
x++;}}
else{fattori=1;}
return fattori;
}
}
ecco il risultato
Per eseguire il programma sopra hai bisogno di creare il progetto disegno con il main e aggiungere la classe Tela
Segui il corso di Java online e le video lezioni. Buon divertimento!