본문 바로가기

C language

[c언어]1에서 100까지의 홀수 중 소수를 출력해보자.

아주 아주 기초적인 알고리즘이다. 

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>


int main()
{
int p;
int i;

int primes[50] = {0};      //array의 초기 값을 0으로 지정해 주자.
int primeIndex = 2;

bool isPrime;      //소수라면 1, 아니라면 0 이다.


//소수 하드 코딩
primes[0] = 2;
primes[1] = 3;

for( p =5; p<=100; p = p+2)
{
isPrime = true;

for(i = 1; isPrime && p/primes[i] >= primes[i]; ++i) //isPrime이고 p(>5)가 prime[i]값으로 나누었을때 prime[i]값보다 크거나 같 
if(p % primes[i] == 0 )                                                 으면 소수이고 i값을 1 증가 시킨다. (나머지가 0이면 소수가 아니다)
isPrime = false

if(isPrime == true)
{
primes[primeIndex] = p;
++primeIndex;

}
}


for(i=0; i<primeIndex; ++i)
printf("%i ", primes[i]);

 
printf("\n");
return 0;

}
 

 

 

두번째 for문의 이해가 꽤 어려울 수 있다. 이럴 때는 직접 수를 넣어가며 알고리즘을 생각해보자. (종이에 써도 좋다)

 

사실 나도 알고리즘 자체는 챗 gpt에 검색하고 따로 암기하기로 했다. (내 수학적 사고력으로 이런걸 떠올릴 순 없었다..)