一、题目
输入一个数n,输出n之内的所有质数
如图:
二、思路分析
1、设置一个数num,从2开始,不断作+1操作,作为被除数
2、用一个不断自+1的数,除以num,如果num不能被整除,则为质数
3、例子:
输入num=4,则num里面有2、3、4三个数,
把2除以2;
3除以2、除以3;
4除以2、除以3、除以4。
当i=2时,除到最后一个数2前,i不能被整除,则i为质数
当i=3时,除到最后一个数3前,i不能被整除,则i为质数
当i=4时,除到最后一个数4前,i不能被整除,则i为质数
三、代码图片【带注释】
四、源代码【带注释】
#include
int main()
{
int num=0;
cc:
printf("输入一个大于1数字:");
scanf("%d",&num);
//当num小于等于1时,输入有误
if(num<=1)
{
printf("输入有误,请重新输入\n");
goto cc;
}
panDuanZhiShu(num);//调用[判断质数]函数
}
panDuanZhiShu(int num)
{
int i,j;
printf("\n%d以内的质数为:",num);
for(i=2; i<=num; i++)
{
for(j=2; j<=i; j++)
{
//被除数能被整除,则跳出第一重循环
if(i%j==0)
{
break;
}
}
//注意:当循环结束时,如果j循环到最后一个数为i,则输出i
//比如:i=5,当i=5除以j=2、3、4、5都无法整除,则跳出循环
//当j=5时,即已除了除1和其自身外的所有的数,也无法整除
//所以,该数为质数
if(j==i)
{
printf("%d ",i);
}
}
}
五、运行结果
关注我, 每天分享编程知识