EASY7
[C언어 14강] 함수와 배열을 이용한 실습 본문
실습내용: 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;
}
'개발 공부 > C' 카테고리의 다른 글
[C언어 16강] gets()와 scanf() 문자열 입력받기 (0) | 2016.07.08 |
---|---|
[C언어 15강] 문자열은 배열이다 , strlen (0) | 2016.07.08 |
[C언어 13강]함수에서 배열 사용하기 (0) | 2016.07.08 |
[C언어 12강] 배열이란 무엇인가 (0) | 2016.07.07 |
[C언어 11강] 함수란 무엇인가 (0) | 2016.07.07 |