인프런 커뮤니티 질문&답변

dongdong님의 프로필 이미지
dongdong

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

15. 소수의 개수(제한시간 1초)

뒤집은 소수문제

작성

·

383

0

제가 혼자 숫자 뒤집는 코드를 짜봤는데 혹시 여기서 무엇이 잘못되었는지 알려주실 수 있나요...? 콘솔창엔 아무것도 뜨지않았습니다.

답변 6

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

b 배열의 크기를 1000정도의 크기로 잡고 reverse와 isPrime 함수를 수정했습니다. 확인해 보세요.

#include <iostream>
using namespace std;
int reverse(int x){
	int b[1001]={0};
	int r=0;
	int cnt=0;
	int c=1;
	while(x>0){
		b[cnt]=x%10;
		x=x/10;
		cnt++;
	}

	for(int i=1;i<=cnt;i++){
		r+=b[cnt-i]*c;
		c*=10;
	}
	return r;
}

bool isprime(int x){
	int i,j,flag;
	for(i=2;i<x;i++){
		if(x % i == 0) return false;
	}
	return true;
}


int main(){
	freopen("input.txt","rt",stdin);
	int i,n;
	int a[101]={0};
	cin>>n;
	for(i=0;i<n;i++){
		cin>>a[i];
		a[i]=reverse(a[i]);
	}

	for(i=0;i<n;i++){
		if(isprime(a[i])==true){
			cout<<a[i] << endl;
		}

	}
	return 0;
}

0

dongdong님의 프로필 이미지
dongdong
질문자

이렇게 아무것도 뜨지 않는데 무슨 문제일까요..?

0

dongdong님의 프로필 이미지
dongdong
질문자

#include <iostream>

using namespace std;

int reverse(int x){

int b[1000001]={0};

int r=0;

int cnt=0;

int c=1;

while(x>0){

b[cnt]=x%10;

x=x/10;

cnt++;

}

for(int i=0;i<=cnt;i++){

r+=b[cnt-i]*c;

c*=10;

}

return r;

}

bool isprime(int x){

int i,j,flag;

for(i=2;i<x;i++){

flag=1;

for(j=2;j*j<=i;j++){

flag=0;

break;

return false;

}

return true;

}

}

int main(){

freopen("input.txt","rt",stdin);

int i,n;

int a[101]={0};

cin>>n;

for(i=0;i<n;i++){

cin>>a[i];

a[i]=reverse(a[i]);

}

for(i=0;i<n;i++){

if(isprime(a[i])==true){

cout<<a[i];

}

}

return 0;

}

0

김태원님의 프로필 이미지
김태원
지식공유자

위에 코드에서

for(int i = 1; i <=cnt; i++){

r += b[cnt-i] * c;

c *= 10;

}

와 같이 변수 i를 1부터 돌려보세요.

0

dongdong님의 프로필 이미지
dongdong
질문자

뒤에 짜여진 코드입니다!

김태원님의 프로필 이미지
김태원
지식공유자

풀코드를 그림형태말고 복사 붙여넣기 해서 텍스트 형태로 올려주세요.

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

풀코드를 텍스트 형태로 올려주시면 제가 실행해보겠습니다.

 

 

dongdong님의 프로필 이미지
dongdong

작성한 질문수

질문하기