C语言判断一个数是否为素数的三种方法(详细)
创始人
2024-11-05 03:13:37
0

         前言

         今天我们来使用C语言来实现判断一个数是否为素数,首先我们需要了解到素数的概念,素数就是只能被1和它本身整除的数。

        第一种方法

   

#define _CRT_SECURE_NO_WARNINGS #include #include     int main() { 	int i;int n; 	printf("请输入一个整数:>"); 	//输入数字 	scanf("%d", &n); 	//判断是否为素数 	if (n <= 1) 	{ 		printf("%d不是素数\n", n); 	} 	else  	{ 		int flag = 1;//设置flag= 1,假设n是素数 		for (i = 2;i <= n/2;i++) 		{ 			if (n % i == 0) 			{ 				flag = 0; 				break; 			} 		} 		if (flag == 1) 			printf("%d是素数\n", n); 		else 			printf("%d不是素数\n", n); 	} 	 	return 0; }

        这是第一种代码,我们来分析一下,首先创建变量i和n,这里我们i用于循环,n用来存放我们输入的数字。之后我们设置一个if语句来判断输入的数是否小于1,如果小于1的话直接输出不是素数。

        之后我们设置一个flag,这个flag的作用是假设n是素数,这里的flag是一个辅助变量,它用于追踪当前检查的数n,看它是否是一个素数。

        之后使用一个for循环来让n试除i,当n可以被i整除的时候,我们发现这个数n不是素数flag不成立,我们给flag赋值为0,之后跳出循环进行判断,进入else语句,输出n不是素数。

        这里要注意的一点是我们试除的时候,只需要除到n/2,如果我们一个数可以被一个n/2的数整除,那么我们就没有必要再去重复的试除它之后的数。

        第二种方法了,对程序进行优化

        

int main() { 	int i;int n; 	printf("请输入一个整数:>"); 	//输入数字 	scanf("%d", &n); 	//判断是否为素数 	if (n <= 1) 	{ 		printf("%d不是素数\n", n); 	} 	else  	{ 		int flag = 1;//设置flag= 1,假设n是素数 		for (i = 2;i <= sqrt(n);i++) 		{ 			if (n % i == 0) 			{ 				flag = 0; 				break; 			} 		} 		if (flag == 1) 			printf("%d是素数\n", n); 		else 			printf("%d不是素数\n", n); 	} 	 	return 0; }

        在这个代码中,我们使用了给n开平方的方式来使我们用来试除的n值最简,一个数如果不能被它开平方之后得到的这个数之前的数整除的话,那么它就一定是素数了。

        简单举个例子,sqrt(17)如果开平方的话得到的数是4.1左右,如果我们试除2-4之间的数之后,发现都不可以被n整除,那么n就是素数。

        sqrt是数学函数,记得调用头文件

        最后一种方法是使用函数调用的方式

        

#define _CRT_SECURE_NO_WARNINGS #include #include int infer_prime(int n) { 	int i; 	if (n <= 1) 	{ 		return 0; 	} 	else 	{ 		for (i = 2;i <= sqrt(n);i++) 		{ 			if (n % i == 0) 			{ 				return 0; 			}  		} 		return 1; 	} } int main() { 	//输入一个数 	int p = 0; 	printf("请输入一个数字"); 	scanf("%d", &p); 	//通过函数判断是否为素数 	if (infer_prime(p)) 		printf("%d这个数字是素数\n", p); 	else 		printf("%d这个数字不是素数\n", p); 	//输出是素数或者不是素数 	return 0; }

        我们最后使用函数调用的方式来判断n是否是素数,我们设置一个函数,函数名为infer_prime(当然这个函数名也可以设置为其他,看自己设置函数名的习惯),这次在主函数中我们首先设置变量p存放我们的函数,这里我们使用if语句来判断函数是否为真,如果真(if语句判断为1)那么我们就判断p是一个素数,如果假(if语句判断为0),那么p就不是素数。

        我们进入函数,函数类型为整型,我们形参设为n,用来接受p的值,之后设置一个i用来试除n,之后就和我们之前一样了,使用一个if语句排除小于1的数对程序的影响,之后试除到n开平方,不一样的就是我们这里如果判断出n是素数的话,我们直接给让返回值为1(return 1),到我们主函数的if语句中,判断为真(if(1)),就可以直接输出n是素数。

        希望对大家有帮助,如果有任何疑惑可以私信博主或者留言评论区,看到会马上回复哦,程序也有不足之处,希望如果有兄弟发现问题可以积极指正,博主主打一个听劝!!

相关内容

热门资讯

八分钟了解!newpoker怎... 八分钟了解!newpoker怎么安装脚本,哈糖大菠萝能开挂吗,指南书教程(有挂分析)1、哈糖大菠萝能...
方案辅助!微信小程序微乐破解器... 方案辅助!微信小程序微乐破解器2024!解谜真的是有辅助教程(有挂细节)1、进入到微信小程序微乐破解...
第9分钟了解!德普之星有辅助软... 第9分钟了解!德普之星有辅助软件吗,德州局透视脚本,步骤教程(有挂神器)运德普之星有辅助软件吗辅助工...
窍要辅助!洞庭茶苑app辅助!... 窍要辅助!洞庭茶苑app辅助!关于存在有辅助神器(有挂辅助)1.洞庭茶苑app辅助 选牌创建新账号,...
七分钟了解!wepoker怎么... 七分钟了解!wepoker怎么开辅助,wepoker透视脚本免费app,绝活儿教程(有挂细节)1、w...
窍要辅助!嘟咪互动有挂吗!开挂... 窍要辅助!嘟咪互动有挂吗!开挂是有辅助软件(有挂总结)窍要辅助!嘟咪互动有挂吗!开挂是有辅助软件(有...
1分钟了解!wepoker辅助... 1分钟了解!wepoker辅助器最新版本更新内容,德普之星私人局辅助免费,办法教程(有挂辅助)wep...
大纲辅助!心悦海南苹果版辅助器... 大纲辅助!心悦海南苹果版辅助器!关于是有辅助工具(有挂攻略)1、玩家可以在心悦海南苹果版辅助器线上大...
指南辅助!小程序广东雀神智能插... 指南辅助!小程序广东雀神智能插件安装下载!解谜真的是有辅助技巧(新版有挂)运小程序广东雀神智能插件安...
第九分钟了解!wepoker作... 第九分钟了解!wepoker作弊辅助,wpk辅助购买,步骤教程(新版有挂)1、完成wepoker作弊...