我试了下程序没有什么问题啊!
回复 楼主 吴军旗
#include <stdio.h>#include <stdlib.h>
#include <math.h>
// 求一个数是否为素数。。。
int main(void)
{
int i, k, m;
scanf("%d", &m);
k = 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);
system("pause");
return 0;
}
1. 我绝对是一个业余的初学者,经常看到楼主出现在论坛,可以肯定楼主的代码写的要比我多很多;
2. 对于该程序本身我不做评价,仅针对程序风格和论坛里的一个常见错误说一下个人的看法;
3. 总的来说,你的代码风格还行,但如7楼所说,你的空格太多,建议看下代码风格方面的书籍;
4. 我一直想提出的,void main(),它必须是错的,K&R在《The C Programming Language》(C程序设计语言)1.7节中就有提到main要向程序所执行的环境返回0,以表明程序正常结束;Andrew Koening在《C Traps and Pitfalls》(C陷阱与缺陷)3.10节中有提到,如果一个程序的main函数不返回任何值,有可能看上去执行失败;Samuel P.Harbison在《C A Reference Manual》(C语言参考手册)9.9节中有提到,在C99之前,main函数的返回类型常常被省略,采用默认类型int,在C99中,这种做法不再允许;Steve Summit在《C Programming FAQs》(C语言常见问题集)11.11和11.12中明确提出,不能将main的返回类型为void,必须声明为返回int。