c语言如何判断素数?

c语言如何判断素数?,第1张

素数又称质数,所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。

首先要知道素数是不等于1,它的因子只有1和它本身。判断一个数是否为素数,可以用大于1小于给定数的所有数去除给定数,如果有任何一个能够除尽,就表示是合数,反之是素数。

扩展资料:

首先,本文英文字母都表示整数,上半部B 》3N 》W,下半部B 》W 》3N。大于3的素数只有6N-1和6N+1两种形式,我们只需判定这两种数是素数还是合数即可。

命题 1 对于B=36N+1 形数而言。

若不定方程(3N)^2+N-(B-1)/36=W^2 有整数解,

则 6(3N-W)+1 是小因子数;6(3N+W)+1 是大因子数。

若不定方程 (3N)^2-N-(B-1)/36=W^2 有整数解,

则 6(3N-W)-1 是小因子数;6(3N+W)-1 是大因子数。

两式都无解,是素数。

参考资料来源:百度百科-质数

素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如29就是素数,因为它不能被 2~28 的任一整数整除。

方法一:判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。

方法二:另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去除就可以了。如果 m 不能被 2 ~  间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。

1、首先需要打开visual C++ 6.0,接着在里面找到文件-新建-文件-C++ Source File选项,建设新文件。

2、接着需要在新建的页面中输入预处理命令和主函数

#include<stdio.h>      /*函数头:输入输出头文件*/

void main()             /*空类型:主函数*/

3、为使函数正常运行,需要再定义变量并输入一个数字,相关程序如下:

int m,i                    /*定义变量的数据类型为整型*/

printf("输入一个数:")     /*输出文字提示*/

scanf("%d",&m)             /*输入一个数字*/

4、随后需要使用for函数和if函数判断是否是素数,具体程序如下:

  for(i=2i<=mi++)           /*用for函数重复下面步骤*/

if(m%i==0)              /*判断输入的数是否能被除1和本身以外的数整除*/

break

if(i>m)                 /*判断i是否大于m*/

printf("%d 是素数\n",m)       /*输出是素数*/

else

printf("%d 不是素数\n",m)     /*输出不是素数*/

5、输入完整的源代码,运行以后,就会在运行界面中显示判断结果。

#include<stdio.h>               /*函数头:输入输出头文件*/

void main()                     /*空类型:主函数*/

{

int m,i                    /*定义变量的数据类型为整型*/

printf("输入一个数:")     /*输出文字提示*/

scanf("%d",&m)             /*输入一个数字*/

for(i=2i<=mi++)           /*用for函数重复下面步骤*/

if(m%i==0)              /*判断输入的数是否能被除1和本身以外的数整除*/

break

if(i>m)                 /*判断i是否大于m*/

printf("%d 是素数\n",m)       /*输出是素数*/

else

printf("%d 不是素数\n",m)     /*输出不是素数*/

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11121591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存