问题及代码:
/*
*Copyright (c)2015,大连东软信息学院
*All rights reserved.
*文件名称:判断是否为素数
*作 者:陈振
*完成日期:2016年3月6日
*版 本 号: v1.0
*问题描述:输入一个整数,判断其是否为素数。
*程序输入:
*程序输出:
*/
#include <stdio.h>
#include<math.h>
int main(void)
{
int m,i,k;
int iPrime;//定义一个素数
printf("Enter a nember:\n");
scanf("%d",&m);
k=sqrt(m);//让i计算到m的开方即可。
for (i=2;i<=k;i++)
{
if(m%i==0)
{
iPrime=0;
printf("Not a prime nuember!\n");
break;
}
}
if (iPrime!=1)
printf("It's a prime numeber!!\n");
return 0;
}
运行结果:
学习总结:
这个问题如果按照一开始的想法就是让i从2取到m-1,但是这种方法效率太低。但是将m开方后,极大的简化了运算,提高了效率。
学习心得:
同样一个问题可能会有不同的解决方法,要学会找到最简单效率最高的算法。