이 때문에 당신은 당신의 코드에서 당신의
n++;
을 두는 곳이다, 그것은 가장 안쪽의 범위 내에서 배치됩니다.
시작 부분에 n = 10이므로 n % 2! = 0은 거짓이며 해당 범위 내의 모든 내용 (n ++ 포함). 절대로 불리지 않는다. 따라서 n % 2! = 0은 반복적으로 false이므로 n은 증가하지 않습니다. 따라서 코드는 무한 while 루프에서 멈춰 있기 때문에 총 인쇄량에 도달하지 못합니다.
코드에 대한 가능한 수정 사항은 다음과 같습니다. 답은 21이 될 것입니다. 그러나 이미 while 루프를 사용하고 있으므로 setup() 메서드에 넣을 수 있습니다. 그렇지 않으면 Arduino는 인쇄를 무한정 계속 유지합니다. 당신의 목표/목적으로 시작
int n = 10;
int total = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
while (n < 100) {
if (n % 2 != 0) {
if (n % 3 != 0) {
if (n % 4 != 0) {
if (n % 5 != 0){
if (n % 6 != 0) {
if (n % 7 != 0) {
if (n % 8 != 0) {
if (n % 9 != 0) {
total++;
}
}
}
}
}
}
}
}
n++;
}
Serial.println(total);
}
..
당신이 2 ~ 9로 나눈 수없는 10에서 100 사이의 숫자를 발견하는 경우, 코드에 가능한 방법이 될 수있다 :
int n = 10;
int total = 0;
void setup() {
Serial.begin(9600);
while (n < 100) {
if (n % 2 != 0) {
if (n % 3 != 0) {
if (n % 4 != 0) {
if (n % 5 != 0){
if (n % 6 != 0) {
if (n % 7 != 0) {
if (n % 8 != 0) {
if (n % 9 != 0) {
Serial.println(n);
total++;
}
}
}
}
}
}
}
}
n++;
}
Serial.print("Total: ");
Serial.println(total);
}
void loop() {
//Serial.println(total);
}
는 개인적으로, 나는 더 적은 중첩 된 IF를
를 선호
그리고 당신은 출력을 얻을 것입니다 :
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
Total: 21
는 도움이되기를 바랍니다.
을'N ++'모든 조항에 해당하는 경우 오직 실행됩니다. 'n = 10'은 첫 번째 절에서 실패하므로'n'은 결코 증가하지 않고 스핀 루프 상태를 유지합니다. 이것은 코드를 적절하게 들여 쓰면 꽤 분명합니다. – Phylogenesis
11은 어떨까요? 그것은 소수입니다. –
그러나 'n'은 절대로 증가하지 않으므로 11로 설정되지 않습니다. – Phylogenesis