什么是质数:“质数又称为素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。质数的约数只有两个,1和它本身。
例如:2、3、5、7、11、13等。
方法一:
没有新定义一个判断符,而是直接通过for语句的自加,如果最后 j 能自加能等于 i ,则证明 j++ 过程中没有经历 if (i % j == 0) 和 break,也就是说没有提前结束循环。所以输出的 i == j 为质数。
#include<stdio.h>
int main()
//判断1~100以内的质数
{
int i,j;
for(i = 1;i<100; i++)
{
for(j = 2;j < i; j++)
{
if(i % j == 0)//如果i能被j给整除,则证明i能被除了1和它本身以外的数给整除,i就不是一个质数
{
break;//跳出循环
}
}
if(j == i)//如果最后j自加能变成和i一样大的数则说明在j++循环过程中一直没有经过上面if判断,则可以证明i是一个质数
printf("%3d",i);
}
printf("\n");
return 0;
}
运行结果如下:
方法二:
通过在第一层for循环语句中定义一个新的判断符 int flag = 0 ,在内循环的 if 判断语句中,如果 flag = 1;则证明 i % j == 0,进入了这个 if 改变了 flag 的值,那么就说明当前 i 不是质数。
如果用定义新判断符的方法,需要在第一层 for 循环的时候将 i 的最小值定义为2,因为如果将 i 的值 1 的话,i 都不大于 j 都不会进入第二层 for 循环,flag 一定等于 0 ,所以输出的时候会多输出一个 1 。
#include<stdio.h>
int main()
//判断1~100以内的质数
{
int i,j;
for(i = 2; i < 100; i++)
{
int flag = 0;//额外定义一个flag = 0
for(j = 2; j < i;j++)
{
if(i%j == 0)//如果进入if语句则可以判断出当前i不是质数
{
flag = 1; //进入后令flag = 1;
break;
}
}
if(flag == 0)//如果程序运行到这里flag==0,则证明当前i没有进入上面if语句,当前i为质数
{
printf("%4d",i);
}
}
printf("\n");
return 0;
}
运行结果如下: