http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1440 [º¹»ç]
[filtering_prime_number.c]
Q. ÀÔ·ÂÆÄÀÏ¿¡ ÀÔ·ÂµÈ ¼ýÀÚµé Áß ¼Ò¼ö(Prime Number)¸¸À» °ñ¶ó³» Ãâ·ÂÇ϶ó.
<ÀÔ/Ãâ·ÂÆÄÀÏ ¿¹>
[input.txt]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
[output.txt]
2 3 5 7 11 13 17 19 23 29
A. ¿¹Á¦¼Ò½º
#include <stdio.h>
#include <string.h>
#include <math.h> //sqrt(Á¦°ö±Ù, ·çÆ®)¸¦ »ç¿ëÇϱâ À§ÇØ math.h ÀÎŬ·çµå
const int MAX_SIZE = 255; //»ó¼ö¸¦ const·Î Á¤ÀÇ
int isPrimeNum(int num); //ÇÔ¼öÀÇ ¿øÇü ¼±¾û
int main(void) {
FILE * input = fopen("input.txt", "r"); //ÀÔ·Â ÆÄÀÏ
FILE * output = fopen("output.txt", "w"); //Ãâ·Â ÆÄÀÏ
char txt[MAX_SIZE]; //input.txtÀÇ ³»¿ëÀ» ÀúÀåÇÒ ¹®ÀÚ¿
char tmp[10] = ""; //·çÇÁ¸¦ µ¹¶§¸¶´Ù »ý±â´Â ¼ýÀÚ¸¦ ÀúÀå
char nums[MAX_SIZE]; //¼Ò¼öµéÀ» ÀúÀåÇÒ ¹®ÀÚ¿, Ãâ·Â¿¡ »ç¿ë
fgets(txt, sizeof(txt), input); //input.txt >> txt
int i;
for(i=0; i<=strlen(txt); i++) {
if(txt[i] != ' ' && txt[i] != '\0') { //txtÀÇ i¹ø° ¹®ÀÚ°¡ °ø¹é(' ')ÀÌ ¾Æ´Ï°í ³Î¹®ÀÚ°¡ ¾Æ´Ò ¶§
tmp[strlen(tmp)] = txt[i]; //tmp¿¡ txtÀÇ i¹ø° ¹®ÀÚ¸¦ Ãß°¡
} else {
if(isPrimeNum(atoi(tmp)) == 1) { //tmp¿¡ ÀúÀåµÈ ³»¿ëÀ» ¼ýÀÚ·Î ¹Ù²Û °Í(atoi)ÀÌ ¼Ò¼öÀÏ ¶§
//¼ýÀÚ¸¦ ±¸ºÐÇϱâ À§ÇÑ °ø¹é Ãß°¡
if(strlen(nums) != 0)
strcat(nums, " ");
strcat(nums, tmp); //nums ¹®ÀÚ¿¿¡ tmp Ãß°¡
}
memset(tmp, 0, sizeof(tmp)); //tmpÀÇ ³»¿ëÀ» ÃʱâÈ
}
}
fprintf(output, nums);
fclose(input);
fclose(output);
return 0;
}
//ÀÎÀÚ·Î ¹ÞÀº numÀÌ ¼Ò¼öÀÏ ¶§ 1À» ¸®ÅÏÇÔ
int isPrimeNum(int num) {
if(num == 1 || num == 0) //numÀÌ 0 ¶Ç´Â 1ÀÏ ¶§ ÇÕ¼º¼ö
return 0;
//¡înum¸¸Å i¸¦ µ¹·Á¼ ³ª´©¾î¶³¾îÁö´Â ¼ö°¡ ÀÖÀ¸¸é ÇÕ¼º¼ö
int i;
for(i=2; i<=sqrt(num); i++) {
if(num%i == 0)
return 0;
}
return 1;
} |
Hit : 8649 Date : 2010/03/20 05:28
|