알고리즘
[Array(1,2차원 배열)] 피보나치 수열 & 소수(에라토스테네스 체) & 뒤집은 소수
날아
2023. 3. 23. 20:43
Q. 피보나치 수열을 출력한다. 피보나치 수열이란 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다.
입력은 피보나치 수열의 총 항의 수 이다.
Class Main {
public int[] solution(int n){
/*
int[] answer = new int[n];
answer[0]=1;
answer[1]=1;
for(int i=2; i<n; i++) {
answer[i] = answer[i-2]+answer[i-1];
}*/
/*배열을 쓰지 않을 경우*/
int a = 1;
int b = 1;
int c;
System.out.print(a+" "+b+" ");
for(int i=2; i<n; i++){
c=a+b;
System.out.print(c+" ");
a = b;
b = c;
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
for(int x : T.solution(n)){
System.out.print(x+" ");
}
}
}
Q. 자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하라
만약, 20이 입력되면 1부터 20까지의 소수는 2,3,5,7,11,13,17,19로 총 8개이다.
Class Main {
public int[] solution(int n){
int answer = 0;
int[] ch = new int[n+1];
for(int i=2; i<=n: i++){
if(ch[i]==0){
answer++;
for(int j=i; j<=n; j=j+i){ //j가 i의 배수만큼 증가해야하기 때문에 j+i로 해준다.
ch[j]=1;
}
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
System.out.println(T.solution(n));
}
}
Q. N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하는 프로그램을 작성하시오
단, 910을 뒤집을 경우 19로 숫자화 해야한다.
Class Main {
public boolean isPrime(int num){
if(num==1) return false;
for(int i=2; i<num; i++){
if(num%i==0){
return false;
}
}
return true;
}
public ArrayList<Integer> solution(int n, int[] arr){
ArrayList<Integer> answer = new ArrayList<>();
for(int i=0; i<n; i++){
int tmp = arr[i];
int res = 0;
while(tmp>0){
int t = tmp%10;
res = res*10+t;
tmp = tmp/10;
}
if(isPrime(res)){
answer.add(res);
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
for(int x : T.solution(n,arr)){
System.out.print(x+" ");
}
}
}