用c语言写素数(Prime Number),又称为质数,它是不能被1和它本身以外的其它整数整除的正整数。按照这个定义,负数、0和1都不是素数,而17之所以是素数,是因为除了1和17以外,它不能被2 ~ 16之间的任何整数整除。 任务:试商法是最简单的判断素数的方法,用i = 2 ~ m - 1之间的整数去试商,若存在某个m能被1与m本身以外的整数i整除(即余数为0),则m不是素数,若上述范围的所有整数都不能整除m,则m是素数。 采用试商法,使用goto语句、break语句或者采用设置标志变量并加强循环测试等三种方法编写素数判断函数IsPrime(),从键盘任意输入一个整数m,判断m是否为素数,如果m是素数,则按"%d is a prime number\n"格式打印该数是素数,否则按"%d is not a prime number\n"格式打印该数不是素数。 实验目的:熟悉函数设计、循环的控制方法以及程序测试方法,了解什么是边界条件测试,体会模块化程序设计和函数复用的好处和意义。
时间: 2024-02-13 20:00:41 浏览: 45
好的,下面是用C语言编写素数判断函数IsPrime()的代码实现:
```c
#include <stdio.h>
int IsPrime(int num) {
int i;
if (num <= 1) return 0; // 负数、0和1都不是素数
for (i = 2; i < num; i++) {
if (num % i == 0) return 0; // 如果存在某个i能够整除num,则num不是素数
}
return 1; // 否则,num是素数
}
int main() {
int m;
printf("请输入一个整数m:");
scanf("%d", &m);
if (IsPrime(m)) {
printf("%d is a prime number\n", m);
} else {
printf("%d is not a prime number\n", m);
}
return 0;
}
```
该程序会先从键盘读入一个整数m,然后调用IsPrime()函数来判断m是否为素数。如果是素数,则输出"%d is a prime number\n",否则输出"%d is not a prime number\n"。程序中的IsPrime()函数采用试商法来判断素数,其中通过循环从2到num-1之间的整数进行试商,如果存在某个i能够整除num,则num不是素数。如果循环结束后都没有找到能够整除num的整数,则num是素数。
需要注意的是,负数、0和1都不是素数,因此在IsPrime()函数中需要进行特判。此外,为了使程序更加高效,可以将循环的上限设为num的平方根,这是因为如果num不是素数,那么它一定可以分解成两个因子a和b,其中a和b中至少有一个小于或等于num的平方根。因此,只需要在2到num的平方根之间进行试商即可。