소수를 판별하는 방법은 다양하게 존재하고 있습니다. 여기서는 크게 3가지 방법으로 소수를 구하는 방법을 찾아보겠습니다.
i) 임의의 정수를 입력했을때 나누어 떨어지지 않는 경우
임의의수 X에 대해 X를 2부터 X-1로 순서대로 나누어 떨어지는지 검사하면 알 수 있다.
나누어 떨어지는 경우가 나타나면 소수가 아닌 것이다.
#include <iostream>
#include <string>
using namespace std;
int main() {
int x,i,j;
cin >> x; // 판별하기 위한 숫자 입력
i = x-1;
j = 2;
while (1) {
if (j <= i) {
if( x % j == 0){
cout <<" 소수 아니다" << endl;
break;
}else {
j +=1;
}
}else {
cout << "소수이다" << endl;
break;
}
}
return 0;
}
ii) 임의의 정수를 입력했을때 나누어 떨어지는 경우
임의의수 X에 대해 X를 2부터 X-1로 순서대로 나누어 떨어지는지 검사하면 알 수 있다.
나누어서 처음으로 나누어 떨어졌을 때 X와 같은 값이면 소수이다.
#include <iostream>
#include <string>
using namespace std;
int main() {
int x, y;
cin >> x;
y = 2;
while (x % y != 0) {
y++ ;
}
if ( x == y)
{
cout << "소수이다\n";
}else{
cout << "소수가 아니다.\n";
}
}
iii) 제곱근을 이용하기
임의의수 X에 대해 X를 2부터 X의 제곱근까지 숫자로 나누었을때 떨어지는지 검사한다.
한번도 나누어 떨어지지 않으면 소수이고, 한번이라도 나누어 떨어지는 경우가 나타나면 소수가 아니다.
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int x,y;
cin >> x;
y=2;
while (1) {
if ( y <= sqrt(x)){
if( x % y ==0){
cout << "소수가 아니다 \n";
break;
} else
y++;
} else{
cout << " 소수이다. \n";
break;
}
}
return 0;
}
'algorithm > [C++] 정보처리기사' 카테고리의 다른 글
최대값, 최소값, 평균 구하기 (0) | 2018.06.18 |
---|---|
약수 구하기 (0) | 2018.06.15 |
최대공약수, 최소공배수 구하기 (0) | 2018.06.15 |