 |
你的问题的关键是判断一个数是否是质数。因为任何一个自然数都不可能被比它大的自然数整除,所以要判断一个自然数是否为质数,只要看它能否被比它小的自然数(当然除1之外)整除,若只要存在能被一个自然数整除则就不是质数,否则是质数。另一方面,若一个自然数n不是质数,则必然能表示成两个自然数n1和n2之积,并且其中之一必然小于等于sqrt(n),另一个必然大于等于qrt(n)。所以要判断一个自然数n是否为素数,可简化为判断它能否被2至sqrt(n)之间的自然数整除即可。求质数的例子:
#include<math.h>
void main()
{
int i,n;
printf("%d ", 2); //素数2单独输出
for(n=3; n<=99; n+=2) {
int temp=int(sqrt(n));
for(i=2; i<=temp; i++)
if(n %i == 0) break; //执行break时为非正常结束循环
if(i>temp) printf("%d ", n); //输出一个素数
}
printf("\n");
}
张扬的意见:
用c语言编一个函数
isprime(n){
int a,b,flag=1;
for(a=1;a<=sqrt(n);a++)
if (n%a==0) {flag=0; break;};
return flag;} //当flag为0,不是质数,为1为质数,作为判断
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 其他方面, 。
|