循环控制
Suzhou 573 0

素数是只能被1和自己整除的数(不包括1)。 判断一个数字是不是素数的程序:

#include <stdio.h>

int main()
{
    int a;
    scanf("%d",&a);
    int i;
    int isPrime = 1;            //素数为1
    for(i = 2;i < a;i++){
        if(a % i == 0){
            isPrime = 0;
        }
    }
    if(isPrime == 1){
        printf("是素数");
    }else{
        printf("不是素数");
    }
    return 0;
}
13
是素数
--------------------------------
Process exited after 1.533 seconds with return value 0
6
不是素数
--------------------------------
Process exited after 1.82 seconds with return value 0

如果输入数字不是素数,上述程序在执行过程中,i的值会不断递增i++直到到达循环条件边界i>=a,而数学上只要数字a可以被任何一个数字整除,都可以证明a不是素数。可以修改程序使得第一次a % i == 0时就离开for循环,程序修改如下:

#include <stdio.h>

int main()
{
    int a;
    scanf("%d",&a);
    int i;
    int isPrime = 1;            //素数为1
    for(i = 2;i < a;i++){
        if(a % i == 0){
            isPrime = 0;
            break;
        }
    }
    if(isPrime == 1){
        printf("是素数");
    }else{
        printf("不是素数");
    }
    return 0;
}

在程序的12行加入break语句,debug时候可以看到输入6时候,程序中for循环执行一轮后if语句判断成立,break跳出循环,进入到if-else判断中。 ::: tip 在switch-case语句中,case后的语句逐条执行,遇到break停止。 在任何循环中,break的作用是使得程序跳出循环。 continue表示跳过这一轮循环剩下的语句,进入到下一轮循环中。 :::

#include <stdio.h>

int main()
{
    int a;
    scanf("%d",&a);
    int i;
    int isPrime = 1;            //素数为1
    for(i = 2;i < a;i++){
        if(a % i == 0){
            isPrime = 0;
            continue;
        }
        printf("i=%d\n",i);
    }
    if(isPrime == 1){
        printf("是素数");
    }else{
        printf("不是素数");
    }
    return 0;
}
6
i=4
i=5
不是素数
--------------------------------
Process exited after 0.9202 seconds with return value 0

如上述程序,i=2或3时,if判断成立,continue语句执行,跳过打印输出i的值的语句;当i=4或5时,if判断不成立,if后面的语句不执行,执行打印输出i的值的语句。 循环控制

评论区