编译一个函数,求10到100之间的素数,我的程序是这样的,可结果不对,麻烦高人指正~~~

来源:百度知道 编辑:UC知道 时间:2024/06/26 01:08:39
#include "stdio.h"
void fun(int n)
{int i;
for(i=2;i<=n;i++)
{if(n%i==0)
break;
if(i==n)
printf("%d",n);}
}
void main()
{int i;
for(i=10;i<=100;i++)
fun(i);
}

#include<stdio.h>
void fun(int n)
{
int i;
for(i=2;i<n;i++) /*这里的n最好是sqrt(n),提高程序效率:i<=sqrt(n)*/
if(n%i==0) break;
if(i==n) printf("%d ",n);/*上面改的话,这里i==sqrt(n)+1,在最上面加#include<math.h>*/
}
void main()
{
int i;
for(i=10;i<=100;i++)
fun(i);
printf("\n");
}

当i=n进入循环之后 n%i 就等于0了,然后就break,没有机会print了

你可以把这两个判断掉过来写就对了

当然还要提醒你一句,就算结果对了这程序也够难看的

素数求法是 让每一个数 N 去和2到 N/2 求模 只要其中有一个求模为0 那就不是素数

void fun(int n)
{int i;
for(i=2;i<n;i++)/*i不可取到n*/
{if(n%i==0)
break;
if(i==n)
printf("%d",n);}
}

if(n%i==0) 你这一句控制得不行,得这样if(n%i==0&&i!=n) ,要不然一个也输不出来,因为每个数最终都可以被自己整除的。
还有这里for(i=2;i<=n;i++) ,i可以不用到i<=n;判断一个素数只要到i<=sqrt(n)这里就可以了,就可以判断出它是否为素数了,这里可以改良一下,提高效率。

2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97