用C语言如何判断素数
材料/工具:visual C++ 6.0
1、打开visual C++ 6.0-文件
2、点击新建-文件-C++ Source File
3、输入预处理命令和主函数:
#include<stdio.h> /*函数头:输入输出头文件*/
void main() /*空类型:主函数*/
4、定义变量并输入一个数字:
int m,i; /*定义变量的数据类型为整型*/
printf("输入一个数:"); /*输出文字提示*/
scanf("%d",&m); /*输入一个数字*/
5、用for函数和if函数判断是否是素数:
for(i=2;i<=m;i++) /*用for函数重复下面步骤*/
if(m%i==0) /*判断输入的数是否能被除1和本身以外的数整除*/
break;
if(i>m) /*判断i是否大于m*/
printf("%d 是素数\n",m); /*输出是素数*/
else
printf("%d 不是素数\n",m); /*输出不是素数*/
6、完整的源代码:
#include<stdio.h> /*函数头:输入输出头文件*/
void main() /*空类型:主函数*/
{
int m,i; /*定义变量的数据类型为整型*/
printf("输入一个数:"); /*输出文字提示*/
scanf("%d",&m); /*输入一个数字*/
for(i=2;i<=m;i++) /*用for函数重复下面步骤*/
if(m%i==0) /*判断输入的数是否能被除1和本身以外的数整除*/
break;
if(i>m) /*判断i是否大于m*/
printf("%d 是素数\n",m); /*输出是素数*/
else
printf("%d 不是素数\n",m); /*输出不是素数*/
}
介绍三种使用C语言来判断素数的方法,以及用做素数表来判断找素数的方法。
判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
#include〈math.h〉
main()
{ int m,k,i;
for(m=1;m<=100;m=m+2) //m=m+2,因为偶数都不是素数,不用考虑,所以每次m+2.
{ k=sqrt(m) //先求这个数的平方跟
for(i=2;i<=k;i++) //然后用i(从2到k,即m的平方跟)去除m,
if(m%i==0) break; //如果能被整除, 则不是素数,break
if(i>=k+1) pritnf("%d",m); //如果i>k+1,则说明没有数能整除m.则m是素数
}
}
另外判断方法还可以简化。m不必呗2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。如果m不能被2~√m间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。(原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。例如16能被2,4,8整除,16=2*8,2小于4,8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可)
#include<stdio.h>
#include<math.h>
void main()
{
int m,i,k;
printf("请输入一个整数:");
scanf("%d",&m);
k=(int)sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>k)
printf("%d 是素数。\n",m);
else
printf("%d 不是素数。\n",m);
}