어떤 자연수 n이 주어지면 그 자연수 n보다 작은 소수가 뭐가 있는지 출력해주는 기능을 만들것이다.
상속으로 구현하기
- 부모클래스 is_prime
package prime_checker;
public class is_prime {
boolean is_prime_fuc(int n) {
// double sqrt_n = Math.sqrt(n);
for(int i=2; i < n; i++) {
if(n%i == 0)
return false;
}
return true;
}
}
- 자식클래스 (is_prime클래스를 부모로 상속받는다)
package prime_checker;
public class find_prime extends is_prime{
// 상속받는 클래스, 매소드를 선언해줘야함
//매소드
//(보통 매소드는 접근제한을 public,
// 소수이면 출력하는 형태이기 때문에 void를 써줬다)
public void print_prime(int n){
for(int i = 2; i < n; i++) {
if(is_prime_fuc(i)) {
System.out.print(i+" ");
}
}
}
}
- 메인 클래스
package prime_checker;
//is prime
public class main {
public static void main(String[] args) {
int n = 21;
find_prime p = new find_prime();
p.print_prime(n);
}
}
결과 :

하나의 메인 클래스에서 구현하기
package prime_only_one;
//import java.util.ArrayList;
public class main {
public static void main(String[] argsssss) {
// 실습 2~n사이의 소수를 모두 출력
int n = 32;
for(int i=2; i<n; i++) {
if(i == 2) {
System.out.print(i+" ");
}
for(int j=2; j<i; j++) {
if(i%j == 0) {
break;
}
if(j==i-1) {
System.out.print(i+" ");
}
}
}
}
}
결과:

에라토스테네스의 체
package eratos_prime;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int n = 42;
boolean[] p = new boolean[n+1];
Arrays.fill(p, true);
p[0] = p[1] = false;
for(int i=2; i*i<=n; i++) {
if(p[i]) {
for(int j=i*i; j<=n; j+=i) {
p[j] = false;
}
}
}
for(int i=0; i<=n; i++) {
if(p[i]) {
System.out.print(i+" ");
}
}
}
}
결과:

골드바흐의 추측
짝수인 임의의 수는 두 소수들의 합으로 표현가능하다.
package goldbach_prime;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int n = 30;
boolean[] p = new boolean[n+1];
Arrays.fill(p, true);
p[0] = p[1] = false;
for(int i=2; i*i<=n; i++) {
if(p[i]) {
for(int j=i*i; j<=n; j+=i) {
p[j] = false;
}
}
}
for(int i=1; i<=n; i++) {
if(p[i]) {
for(int j=i; j<=n; j++) {
if(p[j]) {
if(i+j == n) {
System.out.println(i+" "+j);
}
}
}
}
}
}
}
결과 :

소인수분해
package prime_factorization;
public class Main {
public static void main(String[] args) {
int n = 120;
System.out.print(n+"=");
int i = 2;
String result = "";
while(true) {
if(n==1) {
break;
}
if(n%i==0) {
result += i+"x";
// System.out.print(i+"x");
n = n/i;
}else {
i++;
}
}
String result1 = result.substring(0,result.length()-1);
System.out.print(result1);
}
}
결과:

'Java' 카테고리의 다른 글
상속 (0) | 2022.10.19 |
---|---|
자바 - 오버로딩 vs 오버라이딩 (0) | 2022.06.10 |
자바 - 기타 제어자 (0) | 2022.05.25 |
자바 - 메소드 오버로딩 (0) | 2022.05.24 |
자바 - 기본 생성자 (0) | 2022.05.17 |
댓글