遇到一个c语言的问题求解

来源:百度知道 编辑:UC知道 时间:2024/05/20 11:03:23
题目是这样的:判断101到200之间的素数,并输出。我自己编写的程序是这样的
#include<stdio.h>
#include<math.h>
void main()
{
int a,leap,num=0;
int m;
for(m=101;m<201;m++){
for(a=2;a<(int)sqrt m;a++)
if(m%a==0)
{leap=0;break;}
else leap=1;
if(leap=0)
{
printf("%-4d",m);
num++;
if(h%10==0)
printf("\n");
}}
}
有错误。
求正确答案,思路最好和我的一样。并指出我的错误。谢谢。

#include<stdio.h>
#include<math.h>
void main()
{
int a,leap,num=0;
int m;
for(m=101;m<201;m++){
for(a=2;a<(int)sqrt m;a++) //sqrt(m) 少括号
if(m%a==0)
{leap=0;break;}
else leap=1;
if(leap=0) //leap=0不是素数。应该改为leap==1;
{
printf("%-4d",m);
num++;
if(h%10==0) //h未定义。应改为if(num%10==0)
printf("\n");
}}
}
修改后即可。呵呵

楼上两位重新循环都不把leap置0下一次还怎么判断是不是素数a ?建议回答前先运行下代码
#include<stdio.h>
#include<math.h>
void main()
{
int a,leap,num=0;
int m;
for(m=101;m<201;m+=2)
{
leap = 0;
for(a=2;a<=sqrt( m);a++)
if(m%a==0)
{leap=0;break;}
else leap=1;
if(leap==1)
{
printf("%-4d",m);
num++;
if(num%10==0)
printf("\n");
}}