현재 씹어먹는 C언어를 통해서 코드를 배우고 있습니다.
배운지 한 5일 정도 되었습니다.
1차원 배열까지 배워서 소수 구하는 알고리즘을 작성해봤는데
자꾸 에러가 납니다. 뭐가 문제인건가요????
1차원 배열에 0~9주소까지 소수값을 할당하고 싶은데 잘 안되네요......
제가 세운 식이 어떤 문제가 있나요???
빨간색 바탕은 주석이고 나머지는 제가 작성한 코드입니다.
#include <stdio.h>
//소수구하는 알고리즘 (실패 ㅠㅠ)//
int main() {
int start, i, Address, Object_prime; //i값 = for 반복문을 위한 변수 prime 주소값을 찾기 위함
int prime+; //소수값을 0자리 부터 9자리까지 입력받기 위한 배열
Object_prime = 5; //해당 값이 소수값인지 아닌지 판단하기 위한 4부터 시작 안하는 이유는 합성수이기 때문
prime[0] = 2; //소수의 초기값 2 따로 prime[0]이라는 시작값을 설정하고 k값에 나누어 소수인지 아닌지 판단
prime[1] = 3; //마찬가지
Address = 2; //K가 소수일 경우 prime에 넣을 첫 주소값 -> 이미 0과 1은 2와 3으로 넣었으니 2부터 주소값이 시작해야한다!
//예를 들어 5가 소수라고 판단될 경우 prime[2]=5라고 입력받도록 만들기 위한 변수다
start = 0; //while 반복문 값
while (start <= 7) { /*prime+ 즉, 소수값을 넣을 범위의 배열값이 0부터 9까지 있으며 이미 2개의 주소 0과 1에 2와 3값을 넣었으니 당연히 while문에 넣어서 0부터 7까지만 입력받도록 범위를 설정해야 한다.*/
start++; //이거 안쓰면 반복문이 무한이 된다...
for (i = 0; i < Address; i++) {
if (Object_prime % prime[i] != 0) { //Object_prime 값을 prime[0]부터 prime[1]까지 나머지를 구해보고 0인지 아닌지 판단 => 소수값 판명된 값으로만 나누는 이유는 합성수의 경우 어차피 이전 소수들에게 걸러지므로 굳이 쓸 필요가 없다.
prime[Address] = Object_prime; //if문이 참일경우 prime[Address]=prime[2] -> prime[2]= 2번째 주소에 소수인 Object_prime값을 넣는다.
Address++; //다음의 나눌 수는 prime[0], prime[1], prime[2]까지 넣어야 한다.
//만약 다음갑이 소수로 판단 될 경우 prime[0], prime[1], prime[2], prime[3]까지 나누어 그 다음값이 소수인지 판단한다.
Object_prime++; //해당값이 소수값으로 판단 되었을 경우 object값에 1을 더해 다음수가 소수인지 아닌지 판단
}
else {
continue; //k가 해당 수들과 나누어 0으로 나누어 떨어지면 k는 당연히 소수가 아니므로 출력하지 말고 넘어가야한다.
}
printf("소수 : %d \n", prime[Address]); //최종적으로 prime[9] 값까지 출력하고 0순으로 소수가 나올 수 출력되도록 한다.
}
//start값이 8이 될 경우(사실상 배열의 10이 될 경우) 종료
}
return 0;
}
다른 사람들은 일주일만 c언어 배우면 1차원 배열로 왠만한건 만들 수 있다던데...
저는 이런 기초적인 소수배열조차 맘대로 못하네요... ㅠㅠ 머리가 나빠서 ㅠㅠ
댓글 0