입력한 범위 안에서 소수를 찾아서 화면에 표시하려는 프로그래밍을 재미삼아 진행해 봤습니다..
일단 어떻 방식으로 하려고 설명을 드리면 (바쁘신 분들은 맨 밑에 질문에 답변만 해드리면 될 것 같아요.)
unsigned long long의 형식을 만들어서
unsigned long long rangeS;
unsigned long long rangeF;
unsigned long long numbers = 2ULL;
unsigned long long amount = 1;
printf("write your range to check prime number : ");
scanf("%lld %lld", &rangeS, &rangeF);
이렇게 하여 어떤 범위에 있는 소수를 찾을지 범위를 정하고 여기서 소수를 찾게 하려고 했습니다.
만약에 숫자 범위가 12~17 이라 하면
12로 부터 2,3,4,5 등의 수로 나누어서 나머지가 0이 되면 건너뛰고,
그래도 살아남으면 숫자가 나오는 걸로 하는 것이었습니다.
for (unsigned long long numbers = 2; numbers == i; numbers++)
{
if (i % numbers == 0)
{
i++;
continue;
}
else
{
printf("\n prime number : %lld | # %lld", i, amount);
amount++;
}
}
그런데 도데체 뭐가 문제인지 모르겠습니다..
컴파일 결과
- 구문 오류: unsigned __int64'은(는) ')' 다음에 와야 합니다.
구문 오류: unsigned __int64'은(는) ';' 다음에 와야 합니다.
'<=': 의미 없는 연산자입니다. 파생 작업이 있는 연산자여야 합니다.
'==': 의미 없는 연산자입니다. '='을(를) 사용하려고 했습니까? - 구문 오류: '괄호'
구문 오류: 'if', 'for' 못찾음
구문 오류: ';'이(가) '괄호' 앞에 없습니다.
if와 짝을 이루지 않는 잘못된 else문입니다.
continue가 잘못되었습니다.
If 랑 for 구문을 섞었는것 뿐인데 컴퓨터가 이거 다 오류라고 생난리를 피웁니다.
1. 제가 unsigned long long을 쓴걸 잘못한건가요?
2. for 반복문이랑 if 조건문을 같이 쓰는게 문제가 되는 건가요?
해당 코드는 문법적으로 문제는 없습니다. 로직 오류는 있을 수 있습니다.
단, 사용하는 컴파일러가 최신 컴파일러가 아닌 것 같습니다. 또는 최신 컴파일러이지만 C99 또는 C11 표준을 사용하도록 설정되지 않은 것 같습니다.
해당 질문의 답변은 이전 질문과 중복되는 부분이 많습니다. 이전 답변을 참조하세요.