아주 아주 기초적인 알고리즘이다.
#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에 검색하고 따로 암기하기로 했다. (내 수학적 사고력으로 이런걸 떠올릴 순 없었다..)
'C language' 카테고리의 다른 글
[C언어] chat got 를 이용해 nested if statement code 예제 알아보기 (1) | 2023.12.10 |
---|---|
[C언어] if문에 대해 배워보자 (0) | 2023.12.10 |
[Udemy] Print the byte size of the basic data types 챌린지 (0) | 2023.12.08 |
[C]사각형 길이를 정의하고 둘레와 넓이를 구해보자 (0) | 2023.11.30 |