|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2812 [복사]
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
void FindItOut(int number, int *candidate);
int main (int argc, const char * argv[])
{
int *startNum;
int ans;
printf("Type in a number: \t");
scanf("%d", startNum);
FindItOut(startNum, &ans);
printf("The next prime after %d is %d.\n", startNum, ans);
}
void FindItOut(int number, int *ans)
{
int i, last;
bool isPrime;
if(number <2)
*ans = 2;
else if(number =2)
*ans = 3;
else
{
*ans = number;
if (*ans % 2 == 0)
*ans--;
do
{
isPrime = true;
*ans += 2;
last = sqrt(*ans);
for (i =3; (i<=last) && isPrime; i+=2)
{
if ((*ans % i ) == 0)
isPrime = false;
}
}
while(!isPrime);
}
}
안녕하세요 ^0^ C언어 초보자 질문입니당.
원래 사용자가 숫자를 넣으면 그 다음 소수 를 print 해야 돼는데요
0,1 느면 2 라고 나오고
2 넣으면 3 이라고 잘만 나오는데
3이상의 숫자를 넣으면 자꾸 3 이라는 값이 나오내요....
제가 포인터 배운지 얼마 안돼서... 모가 잘못됀거져? |
Hit : 6833 Date : 2010/12/22 06:56
|