CodingTest Exam/[C++] Algorithm Study

14. 뒤집은 소수 (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★★☆☆

HongongHB 2023. 7. 23. 00:38

#include<stdio.h>

int reverse(int x){
	int r = 0; // ex> x = 123
	while(x != 0)
	{
		r *= 10; // 자리수 올림 r = 0; // r = 30 // r = 320;
		r += x % 10; // 1의 자리수 추출 후 더하기 r += 3; // r += 2; // r += 1;
		x /= 10; // 1의 자리수 빼고 자리수 내리기 x = 12; // x = 1 // x = 0;
	}
	return r; // r = 321
}

bool isPrime(int x){
	bool _isPrime = true;
	if(x == 1) return false;
	for(int i = 2; i < x; i++)
	{
		if(x % i == 0)
		{
			_isPrime = false;
			break;
		}
	}
	return _isPrime;
}

int main(){
	int a, num, r = 0;
	scanf("%d", &a); // 숫자 개수 입력
	for(int i = 0; i < a; i++)
	{
		scanf("%d", &num); // 숫자 입력
		r = reverse(num);
		if(isPrime(r))
			printf("%d ", r); 
	}
}

1. 정수 숫자 뒤집는 방법

 

int r = 0;

int x = 123
while(x != 0)
{
    r *= 10; // 자리수 올림 r = 0; // r = 30 // r = 320;
    r += x % 10; // 1의 자리수 추출 후 더하기 r += 3; // r += 2; // r += 1;
    x /= 10; // 1의 자리수 빼고 자리수 내리기 x = 12; // x = 1 // x = 0;
}

--> r = 321

 

2. n이 소수 확인하는 방법(시간복잡도 O(N))

소수는 1과 자기 자신을 제외한 약수가 없는 수를 말한다. 즉 0과 1은 소수가 아니므로 n을 2부터 나누어가면서

n-1까지 확인한다.