经典算法(1)判断一个数是否为素数

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。 大于1的自然数若不是质数,则称之为合数(也称为合成数)。

解法1

include <stdio.h>

main()
{int n,i;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
if(n%i==0) break;
if(i>=n) printf("%d is\n",n);
else printf("%d is not\n",n);
printf("a prime number.\n");
}
运行结果:

思考:为什么要用'>=':为了后面那句更方便 T.T

解法2

include <stdio.h>

include <math.h>

main(){
int n,i,k;
scanf("%d",&n);
k=sqrt((double)n); //求根号下x,函数原型:double sqrt(double x);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>=k+1)printf("%d is \n",n);
else printf("%d is not\n",n);
printf("a prime number.\n");
}
运行结果:

思考:为什么条件是大于k+1🤔(现在不知道,后面知道了再补)

posted @ 2020-12-07 22:40  喵的龙酱  阅读(342)  评论(0)    收藏  举报