判断一个数是否为素数,首先我们需要明白什么是素数?
素数又称为质数(prime),也就是说,只能被1和这个数本身整除。例如17,只能被1和17整除。如果换成24,24能够被1,2,3,4,6,8,12,24同时整除,那么24就不是素数。
上代码
#include<stdio.h>
int main()
{
int i,n;
printf("please input the number:\n");
scanf_s("%d",%n);
for(i=2;i<n;i++)
if(n % i == 0) break;//只有当上面的循环终止,我们才进行下一个if语句的判断
if(i < n)
printf("%d is not a prime number \n",n);
else
printf("%d is a prime number \n",n);
//例如我们输入17,进行循环,不能被2整除,i++一直累积到i=17
//n%i==0,结束循环,进行if条件语句判断,i<n吗?不小于,所以输出else 成立的语句
return 0;
}
因为是从键盘输入,所以要用到scanf,编译器不同,我用的是vs2019,所以加上了_s。
采用的算法是,让n被i整除(i的值从2变到n-1),如果n能被2~(n-1)的任何一个数整除,则表示n肯定不是素数不必再继续被后面的数整除,因此,可以提前结束循环。此时i的值必然小于n