解释一下这个输出素数的程序,除了main函数,其他的每一步都解释一下,越详细越好

img


解释一下这个程序,除了main函数,每一步程序都解释一下是怎么运行的,素数是怎么判断的,数组是怎么储存的,最好能举个具体的例子,越详细越好。

截图中的代码注释挺详细的了,哪里不清楚。。

代码注释如下:

int number_of_prime(int num1, int num2)
{
    int i = 0;
    int j = 0;
    int m = 0; //计数器,用来统计素数的个数
    int num[500] = { 0 }; //存储素数的数组
    for (i = num1; i <= num2; i++) //遍历num1到num2之间的所有数,并逐个判断是否是素数,如果是素数,则保存到数组中
    {
        j = 2;  //素数一般是从2开始的,所以这里把j初始化为2,从2到i-1判断,是否有能被i整除的数
        //添加这两行代码,避免num1小于2,因为,素数是从2开始的
        if (i == 2)
            num[m++] = 2; //2是素数,如果i==2,就把2放入数组,素数的个数+1
        while (i % j != 0 && i > j) //i%j==0表示i有能整除的数,就不是素数,所以这里用i%j !=0来判断 2到i-1的所有数能否被i整除,i>j有两个作用,一个是排除i小于2的所有i,因为小于2的数都不是素数,第二个作用就是保证j==i的时候结束循环
        {
            if (j == i - 1) //j==i-1表示已经遍历了所有2到i-1之间的所有数,且都不能被i整除,i是素数
                num[m++] = i; //把i保存到数组中,素数的个数+1
            j++; //j自增,从2到i-1遍历
        }
        printf("\n%d到%d之间有%d个素数,分别是:", num1, num2, m);
        //这里遍历素数数组,输出所有的素数,因为上面声明num数组的时候,把所有的元素都初始化为0,而素数不为0,所以如果num[i] !=0就表示当前元素是素数,输出这个数
        for (i = 0; num[i] != 0; i++)
        {
            if (i % 10 == 0)
                printf("\n"); //10个数一行显示
            printf("%d\t", num[i]); //显示数组的元素,以tab键分隔
        }
    }
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632