소수구하는 구하는 알고리즘 시간 측정하기?
입력을 시키면 블럭된 상태로 빠지게 됩니다.
답변 부탁드리겠습니다. 무엇이 잘못된건가요?^^
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#include
#define TRUE 1
#define LOOP 1000
static struct timeval _tstart, _tend;
int is_prime1( int n );
int is_prime2( int n );
void result( int i, int n, int r, long t );
void t_start();
void t_end();
long tval( long t1, long t2 );
int main( void )
{
int n;
long t1, t2;//시간을 측정하기 위한 변수
int r;//결과를 저장하기위한 변수
int i;
puts("\n PRIME2 : Prime algorithm speed test."
"\n Input 0 to end program." );
while( TRUE )
{
puts( "\nInput number to test ->" );
scanf( "%d ", &n );
if( n < 0 )//음수이면 재입력
continue;
if( n == 0 )//0이면 입력되면 종료
break;
/*********************************************
*is_prime1 속도 실행 측정
********************************************/
t_start();
for( i = 0; i < LOOP; i++ )
r = is_prime1( n );
t_end();
result( 1, n, r, tval( t1, t2 ) );
/**********************************************
*is_prime2 속도 실행 측정
*********************************************/
t_start();
for( i = 0; i < LOOP; i++ )
r = is_prime2( n );
t_end();
result( 2, n, r, tval( t1, t2 ) );
}
return 0;
}
/*********************************
*시작시간
*********************************/
void t_start()
{
gettimeofday( &_tstart, NULL );
}
/********************************
*끝나는 시간
********************************/
void t_end()
{
gettimeofday( &_tend, NULL );
}
/****************************************
*시간차
****************************************/
long tval( long t1, long t2 )
{
t1 = _tstart.tv_sec + _tstart.tv_usec;
t2 = _tend.tv_sec + _tend.tv_usec;
return t2 -t1;
}
/*******************************
*첫번째 소수 구하는 알고리즘
*******************************/
int is_prime1( int n )
{
int i;
for( i = 2; i < n; i++ )
if( n % i == 0 )
return !TRUE;
return TRUE;
}
/*******************************
*두번째 소수 구하는 알고리즘
*******************************/
int is_prime2( int n )
{
int i, sqrn;
sqrn = ( int )sqrt( n );
for( i = 2; i <= sqrn; i++ )
if( n % i == 0 )
return !TRUE;
return TRUE;
}
/****************************************
*결과
****************************************/
void result( int i, int n, int r, long t )
{
printf("\n Prime%d Ans : %d is %s prime number in %ld time.",
i, n, r ? "": "not", t );
}
Re: 소수구하는 구하는 알고리즘 시간 측정하기?
scanf( "%d ", &n );
scanf( "%d", &n );
scanf에 들어간 포맷이 잘못됐네요.
----
자신을 이길 수 있는자는
무슨짓이든 할수있다..
즉..무서운 넘이란 말이지 ^-_-^
나? 아직 멀었지 ㅠㅠ
음.. scanf 에 빈칸이 있어도 그럴수가 있는건가요?.. 그렇군요 :
음.. scanf 에 빈칸이 있어도 그럴수가 있는건가요?.. 그렇군요 :)
근데.. 저는 왜 컴파일이 안되죠;; 음..
리눅스인데.. gcc..
시간관련인듯해서 time.h 를 살펴보니..
로 되어있군요..
---------------------------------------------------------------------------
http://jinhyung.org -- 방문해 보세요!! Jenix 의 블로그입니다! :D
[quote="jenix"]근데.. 저는 왜 컴파일이 안되죠;; 음.
두개의 파일을 포함하라고 나옵니다. timeval도 그 안에 정의되어 있구요..man 2 gettimeofday
를 해보면----
자신을 이길 수 있는자는
무슨짓이든 할수있다..
즉..무서운 넘이란 말이지 ^-_-^
나? 아직 멀었지 ㅠㅠ
감사합니다.
감사합니다.
댓글 달기