跪求帮忙 C程序错在那里

来源:百度知道 编辑:UC知道 时间:2024/06/18 05:46:02
判断m是否素数。
我采用的算法是这样的:让m被2到m 除,如果m能被2~m 之中任何一个整数整除,则提前结束循环,此时i必然小于或等于k(即m);如果m不能被2~k(即m)之间的任一整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止循环。在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2~k之间任一整数整除过,因此输出“是素数”。
程序如下:#include <math.h>
main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m+1);/*加1是为了避免在求m时可能出现的误差*/
for (i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1) printf("%d is a Prime muber\n",m);
else printf("%d is not a Prime number\n",m);
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
求100~200间的全部素数。
对本题用一个嵌套的for循环,程序如下:
# include <math.h>
main()
{
int m,k,i,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for (i=2;i<=k;i++)

if (m%i==0) break;
if (i>=k+1){printf("%d ",m);n=n+1;}
if(n%10==0) printf("\n&q

模块划分
#include <math.h>
#include <stdio.h>

bool IsPrime(int nNum)
{
int m,k,i;
m=nNum;
k=sqrt(m);
for (i=2;i<=k;i++)
{
if (m%i==0)
break;
}

if (i>=k+1)
{
return true;
}

return false;
}

void main()
{
int m;
scanf("%d",&m);

if(IsPrime(m))
printf("%d is a Prime muber\n",m);
else
printf("%d is not a Prime number\n",m);
}
程序二
#include <math.h>
#include <stdio.h>

bool IsPrime(int nNum)
{
int m,k,i;
m=nNum;
k=sqrt(m);
for (i=2;i<=k;i++)
{
if (m%i==0)
break;
}

if (i>=k+1)
{
return true;
}

return false;
}

main()
{
int m,n=0;
for(m=101;m<=200;m=m+2)
{
if(IsP