
C语言求素数
main(){inti,m;for(i=2;i<=100;i++){m=sqrt(i);for(i=2;i<=m;i++)if(i%m!=0);printf("%d",i...
main()
{
int i,m;
for(i=2;i<=100;i++)
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);
printf("%d",i);}
getch();
}为什么这代码会进入死循环
首先for(i=2;i<=m;i++)
if(i%m!=0);这俩行代码执行完后 不是应该跳到for(i=2;i<=100;i++)吗 ? 然后继续
for(i=2;i<=m;i++)
if(i%m!=0);的吗? 展开
{
int i,m;
for(i=2;i<=100;i++)
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);
printf("%d",i);}
getch();
}为什么这代码会进入死循环
首先for(i=2;i<=m;i++)
if(i%m!=0);这俩行代码执行完后 不是应该跳到for(i=2;i<=100;i++)吗 ? 然后继续
for(i=2;i<=m;i++)
if(i%m!=0);的吗? 展开
8个回答
展开全部
main()
{
int i,m,j; //增加一个变量,见后面说明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 这里i值被重新赋值,你原来的i值找不到了!如果是素数,怎么输出呢?
for(j=2;j<=m;j++) //换一个变量,不要影响要检查的数据i
if(j%m!=0) //改成j
; //这样写,会让你更清楚,这句如果j不能整除m,就啥也不干,象你所说回到下一个循环检查。
else
break; //加上这两句,如果能整除则说明:i不是素数!!就不要再去检查了。
if ( j > m ) //加上这句,如果检查所有的j全部不能整除m,循环结束后,j一定大于m,这时的i才是素数
printf("%d",i);
}
getch();
}
{
int i,m,j; //增加一个变量,见后面说明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 这里i值被重新赋值,你原来的i值找不到了!如果是素数,怎么输出呢?
for(j=2;j<=m;j++) //换一个变量,不要影响要检查的数据i
if(j%m!=0) //改成j
; //这样写,会让你更清楚,这句如果j不能整除m,就啥也不干,象你所说回到下一个循环检查。
else
break; //加上这两句,如果能整除则说明:i不是素数!!就不要再去检查了。
if ( j > m ) //加上这句,如果检查所有的j全部不能整除m,循环结束后,j一定大于m,这时的i才是素数
printf("%d",i);
}
getch();
}
展开全部
main()
{
int i,m;
for(i=2;i<=100;i++)
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);
printf("%d",i);}
getch();
}为什么这代码会进入死循环
亲,这个程序对不对我先不管..你漏了一个括号
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);
}这个括号你漏了,要不还是能运行的..
{
int i,m;
for(i=2;i<=100;i++)
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);
printf("%d",i);}
getch();
}为什么这代码会进入死循环
亲,这个程序对不对我先不管..你漏了一个括号
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);
}这个括号你漏了,要不还是能运行的..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{int i,j,n=0,xx[1000];
for(i=1;i<1000;i++)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i) /*保证i以下的每个数都不能被i整除*/
xx[n++]=i;
}
printf("1到1000以内的所有素数如下\n");
for(i=0;i<n;i++)
printf(" %d ",xx[i]);
printf("\n 共有n=%d个素数 \n",n);
}
简单易懂
void main()
{int i,j,n=0,xx[1000];
for(i=1;i<1000;i++)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i) /*保证i以下的每个数都不能被i整除*/
xx[n++]=i;
}
printf("1到1000以内的所有素数如下\n");
for(i=0;i<n;i++)
printf(" %d ",xx[i]);
printf("\n 共有n=%d个素数 \n",n);
}
简单易懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好!你的不是死循环,而是没有输出类容。 if(i%m!=0);if语句这里应该把分号去掉
printf("%d",i);
printf("%d",i);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询