실행하면 캡쳐화면처럼 2번째께 이상하게 뜸... 왜그런거임?
아래건 소스...
#include <stdio.h>
#include <time.h>
#define TRUE 1
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, double t)
{
printf("\n Prime%d Ans : %d is%s prime number in %.3f ticks.", i, n, r?"" : " not", t);
}
#define LOOP 1000
int main(void)
{
int n;
double t1, t2; // 시간 저장용
int r; // 결과 저장용
int i;
puts("PRIME1 : Test that input is prime or not.");
puts("\n Input 0 to end program.");
while(TRUE)
{
fputs("\nInput number to test -> ", stdout);
scanf("%d", &n);
if(n<0) // n이 음수이면 재입력
continue;
else if(n==0) // n이 0이면 끝낸다.
break;
t1=clock();
for(i=0; i<10000000; i++)
r=is_prime1(n);
t2=clock();
result(1, n, r, ((t2-t1)/CLK_TCK));
t1=clock();
for(i=0; i<10000000; i++)
r=is_prime2(n);
t2=clock();
result(2, n, r, ((t2-t1)/CLK_TCK));
//printf("\n Ans : %d is %s prime number", n, is_prime1(n)?"":"not");
}
}
result 함수 인자 t에 뭐가 들어가나 알아봐
r=is_prime2(n); 이거를 거친후의 t2값이 -1.#IND000000000000 이렇게 나와... 그래서 t값 계산할때 이상한 값나오고 왜 t2가 이상하게 나올까 앞의것 is_prime1 을 거치면 제대로 나오는데 is_prime2를 거치면 t2가 이상하게 나와버리니...
혹시 모르니 %f 대신 %lf 써봐...