目录
题目分析:
- 实现一个函数,判断一个数是不是素数。
- 素数的定义是大于1的自然数中,只能被1和他本身整除,1不是素数.
- 因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,
- 要判断一个数是否为素数,只要判断比它开根号后的数小的数,能否把它整除.
- 如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。
- 所以我们有两种方法判断素数:
素数判断:n能否被2~n-1整除:
- 代码示例
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int prime(int n)
{
int i;
if (n < 2) {
printf("%d不是素数", n);
}
else {
for (i = 2; i < n; i++) {//判断n在2~n-1中有没有因数
if (n%i == 0)//如果用可以除尽的数,则非素数
break;
}
if (i < n) {//存在2~n-1之间有因数
printf("%d不是素数\n", n);
}
else
printf("%d是素数\n", n);
}
return 0;
}
int main() {
int n;
printf("请输入一个数:\n");
scanf("%d", &n);
prime(n);
system("pause");
return 0;
}
- 运行结果:
判断素数:n能否被2~√n整除
- 代码示例
-
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int n, i; double k; printf("输入一个数:\n"); scanf("%d", &n); k = sqrt(n);//取n的平方根k for (i = 2; i <= k; i++) { if (n%i == 0) break; } if (n <= 1) printf("%d不是素数\n", n); else if (i <= k) printf("%d不是素数\n", n); else printf("%d是素数\n", n); system("pause"); return 0; }
运行结果:
-
早安,
在我有生之日,做一个真诚的人;
不放弃对生活的热爱和执着,在有限的时空里过无限广大的日子;
--------------三毛