c语言求2到100内的素数

#include <stdio.h>
void main()
{
int a,b,c;
for(a=2;a<=100;a++)
{
for(b=2;b<=100;b++)
{if(a%b==0)
break;

else
{printf("%d ",a);
break;
}
}
}
getch();

return 0;
}

帮我看一下哪里有问题!

你的代码很乱 而且完全有逻辑错误,即你的代码判断素数是有问题的。我帮你写了一个完整的逻辑清新的小代码,希望帮到你。

#include <stdio.h>
#include <math.h>
#include <assert.h>

bool IsPrimeNumber(int num)//判断num是否为素数,是的话返回true,否则返回false
{
assert(num >= 1);
if(num == 1)
return false;
else
{
for(int i = 2; i <= sqrt(double(num)); i++)
if(num % i == 0)
return false;
}
return true;
}

int main()
{
for(int start = 2, finish = 100; start <= finish; start++)//判断区间[start,finish]的数是否为素数,是则输出。
if(IsPrimeNumber(start))
printf("%d\t", start);
printf("\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-07
#include <stdio.h>
int main()
{
int a,b=1,c;
for(a=2;a<=100;a++)
{
for(b=2;b<a;b++) ///b的范围是2到a。查找a的因子,如果这里面没有一个因为,则表示素数
{
if(a%b==0)
break;
}
if(b>=a) ///上面的for中的break没有执行,循环正常结束,所以是素数,输出
{
printf("%d ",a);
}
}
getch();

return 0;
}
第2个回答  推荐于2017-09-19
#include <stdio.h>
int main()//
{
  int a,b,c;
  for(a=2;a<=100;a++)
  {
    for(b=2;b<a;b++)//
    {
     if(a%b==0)
        break;
/*
    else
        {printf("%d ",a);
        break;
        }
    */
     }
     if(b==a)
     {
      printf("%d ",a);
     }
  }
  getch();

    return 0;
}

本回答被提问者采纳
第3个回答  2014-03-07
void  main()
{
bool tag=false;
for(int a=2;a<=100;++a)
{
for(int b=2;b<a;++b)
{
if(a%b==0)
{
tag=true;
break;
}
}
if(!tag)
{
cout<<"prime "<<a<<endl;
}
tag=false;
}
system("pause");
}

第4个回答  2014-03-07
void main()
{
int a, b, c;
for (a = 2; a <= 100; a++)
{
for (b = 2; b <= 100; b++)
{
if (a%b == 0)
break;

else
{
printf("%d ", a);
break;
}
}
}

}
相似回答