EASY7

[C언어 14강] 함수와 배열을 이용한 실습 본문

개발 공부/C

[C언어 14강] 함수와 배열을 이용한 실습

E.asiest 2016. 7. 8. 01:54

 

실습내용: 2~100사이의 숫자 중 소수인 것만 찾아서 배열로 저장하여 화면에 출력하자

소수는 1과 자기자신 외에 약수가 없는 것이다

소수를 찾아내는 알고리즘을 찾아내자

 

첫번째 시도

#include<stdio.h>

void prime_num(int arr[], length);/*선언만 미리 해주자*/

void main()

{

int num[5];

int length= sizeof(num)/sizeof(*num);

printf("2~100사이의 숫자 5개를 입력하세요 ");

for(int i=0; i<length; i++)

{

scanf("%d", &num[i]);

}

 

}

void prime_num(int arr[], length)

{

int arr2[length];

int n=0;

 for(int i=0; i<length; i++)

{

for(int j=2; j<i; j++)

{

if(arr[i]%j==0)

break;

if(j==i-1)

{

arr2[n]=arr[i];

}

}

}

}

 

c언어에서 boolean이라는 개념이 있는 건가?

있다. bool frag=true; printf("%d", flag);하면 1이 출력됨

 

두번째 시도

1.숫자 5개 받기

2.이 숫자가 소수이면 true 아니면 false prime_process

3.true인 것은 새로운 배열에 넣기

#include<stdio.h>

void main()

{

int arr[5];

int new_arr[5];

int j=0;

int length= sizeof(arr)/sizeof(*arr);

printf("2~100사이의 숫자 5개를 입력하세요 ");

for(int i=0; i<length; i++)

{

scanf("%d", &arr[i]);

}

for(int i=0; i<length; i++)

{

while(1)

{

if(arr[i]<2 || arr[i]>100)

{        

printf("2~100사이의 숫자 5개를 입력하세요");

 

for(int i=0; i<length; i++)

{

bool b=prime_process(arr[i]);

if(b=1)    

{

new_arr[j]=arr[i];

j++;

}

}

 

}

bool prime_process(int n)

{

if(n=2)

return true; /*2는 소수이기에*/

for(int i=2;i<n;i++)

{

if(n%i==0)/*n이 2가 아닐 때2~n-1으로 나누었을 때 나머지가 0이면 소수가 아님*/

{    

return false

}

}

return true;

 

 

 

}

 

선생님 코드

 

#include<stdio.h>

void main()

{

int primelist[100]={0};/*모두 0을 저장해준다.*/

int i, j=0; /* int자료형으로 같다.*/

for(i=2;i<=100;i++)

{     

if(prime_process(i))

primelist[i++]=i;  /*primelist[0]부터 저장한 후 +1해주기*/

}

printf("소수목록\n");

for(int i=0;i<j;i++ )

{    

printf("\n %d", primelist[]);

}

}

 

int prime_process(int n)

{

 for(a=2; a<n; a++)

{

if(n%a==0 && a!=n)

{

return 0; /* main으로 돌아가라*/

}

} return 1;

}

 

 

 

Comments