c语言 sqrt()函数

来源:百度知道 编辑:UC知道 时间:2024/05/14 12:55:17
#include<math.h>
int prime(int n)
{
int i,j;
j=n;
for(i=2;i<=j;i++)
if(n%i==0)return 0;
return 1;
}
void main()
{
int i,m;
printf("Please input an even intege(m>=6):");
scanf("%d",&m);
for(i=1;i<=m/2;i++)
if(prime(i)==prime(m-i)==1)
{
printf("%d=%d+%d\n",m,i,m-i);
break;
}
getch();
}
以上是验证哥德巴赫猜想的编程,我只想问一下prime()中为什么一定要用sqrt()函数呢
第五行,原本是j=sqrt(n); ,现在我改成j=n,都得不到正确的结果了

如果你改成j=n 那么在for循环最后i=n时候
变成了n%n,所以肯定是返回0
只要改成j=n-1就好了
j=sqrt(n)另外还可以减少循环次数,减少程序运算时间

如果你输入的数是10000
计算机要执行10000次循环,可是判定一个数是不是素数只要扫描到100就可以了
循环100次所需要的时间大大小于10000次

只要sqrt(j)之前没有约数,之后也一定没有,因为约数可以看成成对的
如果改称j=n的话,要把for改成for(i=2;i<j;i++) ,因为一个数可以被自己整除

用sqrt()求简单呗,计算机运行次数少了,程序效率变高了

sqrt()
作用是开放运算。

我们尽量少地让电脑计算一些可以人力解决的事,像你说的这个问题就是这样,其实也可以不用这个函数,只不过这个函数可以提高计算效率