用C语言求10以内的素数
{intm,i;for(m=2;m<=10;m++){for(i=2;i<m;i++)if(m%i!=0)break;printf("%3d",m);}}这个程序为什么输...
{
int m,i;
for(m=2;m<=10;m++){
for(i=2;i<m;i++)
if(m%i!=0) break;
printf("%3d",m);
}
}
这个程序为什么输入的是2,3,4,5,6,7,8,9,10啊?break似乎没起作用。求能正确的程序(我是菜鸟,所以程序写得简单易懂些,谢谢了) 展开
int m,i;
for(m=2;m<=10;m++){
for(i=2;i<m;i++)
if(m%i!=0) break;
printf("%3d",m);
}
}
这个程序为什么输入的是2,3,4,5,6,7,8,9,10啊?break似乎没起作用。求能正确的程序(我是菜鸟,所以程序写得简单易懂些,谢谢了) 展开
7个回答
展开全部
判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
你的方法都错了,还能正确吗。
#include <math.h>
main()
{
int m,i,k,h=0,leap;
printf("\n");
for(m=1;m<10;m++)
{
leap=1;
k=sqrt(m+1);
for(i=2;i<=k;i++){
if(m%i==0)
{
leap=0;
break;
}
}
if(leap)
printf("%d,",m);
}
getch();
getch();
}
你的方法都错了,还能正确吗。
#include <math.h>
main()
{
int m,i,k,h=0,leap;
printf("\n");
for(m=1;m<10;m++)
{
leap=1;
k=sqrt(m+1);
for(i=2;i<=k;i++){
if(m%i==0)
{
leap=0;
break;
}
}
if(leap)
printf("%d,",m);
}
getch();
getch();
}
展开全部
起了作用,但是判断错了
你的程序的意思是:从2开始到这个数的所有数中,如果有任何一个不能整除它,则输出这个数..
结果当然是输出所有整数啦..因为任何一个数n都不可能被所有1~n-1的数整除啊
逻辑错误
#include <stdio.h>
int main()
{
int i,m;
for(i=2;i<=10;i++)
{
for(m=2;m<=i/2;m++) //把i/2换成sqrt(i)更优
if(i%m==0)
break;
if(m>i/2) //如果m增大到超过i/2了,说明没有任何一个m整除i,所以i是素数
printf("%d ",i);
}
}
你的程序的意思是:从2开始到这个数的所有数中,如果有任何一个不能整除它,则输出这个数..
结果当然是输出所有整数啦..因为任何一个数n都不可能被所有1~n-1的数整除啊
逻辑错误
#include <stdio.h>
int main()
{
int i,m;
for(i=2;i<=10;i++)
{
for(m=2;m<=i/2;m++) //把i/2换成sqrt(i)更优
if(i%m==0)
break;
if(m>i/2) //如果m增大到超过i/2了,说明没有任何一个m整除i,所以i是素数
printf("%d ",i);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
break;跳出循环,只是跳出break所在的那个循环,并不是跳出所有的循环。
for(m=2;m<=10;m++)
{
for(i=2;i<m;i++) if(m%i!=0) break; /*break跳出内层循环*/
printf("%3d",m); /*这里是外层循环*/
}
for(m=2;m<=10;m++)
{
for(i=2;i<m;i++) if(m%i!=0) break; /*break跳出内层循环*/
printf("%3d",m); /*这里是外层循环*/
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你跳出的是 I 循环 而不是 M 循环
所以每次都执行了 printf("%3d",m);
所以每次都执行了 printf("%3d",m);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
{
int m,i;
for(i=1;i<=10;i++)
{
m=sqrt(i);
for(int j=2;j<=m;j++)
if(j%i==0) break;
if(j>m) printf("%d is P.\n",i);
}
}
int m,i;
for(i=1;i<=10;i++)
{
m=sqrt(i);
for(int j=2;j<=m;j++)
if(j%i==0) break;
if(j>m) printf("%d is P.\n",i);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询