首先我们先看一下素数的定义:
只能被自己和1整除的数为素数,同时不包括1.
比如:2,3,5,7,11,13,17,19......
我们来写一个程序来看一下:
#include<stdio.h>
int main() {
int x;
scanf_s("%d", &x);
int isPrime = 1;//这个isPrime是用来计数的,用它来判断是否为素数。
int i;
//注意这里是小于x,也就是在循环中最大的数是x-1。
//所以根据这个条件,真的在所有的循环中没有一个可以被x整除。
for (i = 2; i < x; i++)
{
//如果x%i为0的话就表明这个x不是一个素数。
if (x % i == 0)
{
isPrime=0;//这块相当于后面的标记的方法,把需要删除的什么之类的删掉,就是用一个特殊的符号把它标记上。
break;//这里是只要有一次能够整除的话,那就直接结束这次的循环。
}
}
if (isPrime == 1)
{
printf("是素数\n");
}
else
{
printf("不是素数\n");
}
return 0;
}
这边我们再来看一下break和countinue的差别。
break | countinue |
跳出循环 | 跳过本次循环(这个语句下面的所有的语句都不再执行),进入下一轮循环 |
我们用一个流程图来具体的看一下两个的差别w

我们再回过头来看这个程序,由于我们有一个break,所以我们可能不需要写一个isPrime来进行判断,而是直接判断最后的i的值是不是一直走到了x就可以了。
#include<stdio.h>
int main() {
int x;
scanf_s("%d", &x);
//int isPrime = 1;//这个isPrime是用来计数的,用它来判断是否为素数。
int i;
//注意这里是小于x,也就是在循环中最大的数是x-1。
//所以根据这个条件,真的在所有的循环中没有一个可以被x整除。
for (i = 2; i < x; i++)
{
//如果x%i为0的话就表明这个x不是一个素数。
if (x % i == 0)
{
//isPrime=0;//这块相当于后面的标记的方法,把需要删除的什么之类的删掉,就是用一个特殊的符号把它标记上。
break;//这里是只要有一次能够整除的话,那就直接结束这次的循环。
}
}
//if (isPrime == 1)
if(i<x)
{
printf("不是素数\n");
}
else
{
printf("是素数\n");
}
return 0;
}
但是,可能后面的这个方法不是特别的好。