截图中的代码注释挺详细的了,哪里不清楚。。
代码注释如下:
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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!