判断一个自然数是否是素数
自定义函数用来判断是否为素数,在主函数main()里进行调用。
【分析过程】
素数==质数,它只能被1和自身整除的自然数。
一切非负整数,即0和所有正整数统称为自然数。
除2以外的所有质数都为奇数。
1 输入一个数num,num<2 用if语句先判断是否为素数。
2 定义Prime函数直接判断素数
i 数字1和2单独用if语句判断;
ii 大于2的数字,先判断是否为偶数(2之后的偶数一定不是素数)
iii 用sqrt()函数判断,能被整除的不是素数
num从3开始,除以3 ~ sqrt()之间的每个整数
{注意}用return语句跳出被调函数
循环语句跳出一个循环,用break语句。
跳出被调函数,用return。执行到哪个return,就从这个return返回到主调函数中。
定义函数的返回值类型为void型,中途退出只写 return;
定义函数的返回值类型为非void型,没有确切的值,习惯写return 0;
没有return 语句,不跳出被调函数,就会按顺序往下执行。
【函数命名规则】
1 和变量命名规则一样,都是字母、数字、下划线的组合,而且不能以数字开头,通常以字母开头。
2 库函数名都是小写,自定义函数名最好以大写字母开头,多个单词组成,每个单词的首字母全部大写,必要时用下划线间隔;
3 函数名不要缩写,方便通过函数名知道它的功能。
【程序代码】
#include <stdio.h>
#include <math.h> //使用sqrt()函数
int Prime(int x); //函数声明
int main(void)
{
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if((Prime(num) == 0))
{
printf("该数不是素数。\n");
}
else if(Prime(num) == 1)
{
printf("该数是素数。\n");
}
return 0;
}
int Prime(int x) //Prime是素数的英文单词
{
int i;
if(x == 1)
{
return 0; //1不是素数
}
else if(x == 2)
{
return 1; //2是素数
}
else if(x%2 == 0)
{
return 0; //除2以外的偶数不是素数
}
else
{
for(i=3; i<=sqrt(x); i++)
{
if(x%i == 0)
{
return 0;
}
}
}
return 1; //执行到这步,该数不能被整除,说明它是素数
}
/*
在VC++6.0中的输出结果为
------------------------
请输入一个整数:9
该数不是素数。
请输入一个整数:174
该数不是素数。
请输入一个整数:113
该数是素数。
-----------------------
*/