一、题目
输入一个数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);
? ? ? ? }
? ? }
}
五、运行结果
?
关注我,?每天分享编程知识