这个判断素数的程序不知道哪里出问题了,运行不对劲,麻烦指教下
#include<stdio.h>#include<math.h>
int panduan(int n)
{
int k=sqrt(n);
int j;
int leap=1;
for(j=2;j<=k;j++)
{
if(n%j==0)
leap=0;
break;
}
if(leap)
printf("%d ",n);
leap=1;
return 0;
}
void main()
{
int i;
for(i=101;i<=200;i++)
{
panduan(i);
}
}
#include <stdio.h>
#include <math.h>
int panduan(int n)
{
int k=sqrt(n);
int j;
int leap=1;
for(j=2; j<=k; j++)
{
if(n%j==0)
{
leap=0;
break;
}
}
if(leap)
printf("%d ",n);
leap=1;
return 0;
}
void main()
{
int i;
for(i=101; i<=200; i++)
{
panduan(i);
}
}
if(n%j==0)
{
leap=0;
break;
}
差别就在这一段需要大括号括起来 漩涡鸣人 发表于 2014-9-18 21:40
差别就在这一段需要大括号括起来
#include<stdio.h>
#include<math.h>
int panduan(int n)
{
int k=sqrt(n);
int j;
int leap=1;
for(j=2;j<=k;j++)
{
if(n%j==0)
leap=0;
break;
}
if(leap)
printf("%d ",n);
leap=1;
return 0;
}
void main()
{
int i;
for(i=101;i<=200;i++)
{
panduan(i);
}
}
我还有个问题哈,就是
if(leap)
printf("%d ",n);
leap=1;
return 0;
}
这一段里面的leap=1好像没起到什么作用哦,试了几次有没有没有运行区别,但是又想不通,
如果这里
for(j=2;j<=k;j++)
{
if(n%j==0)
leap=0;
break;
}
判断成功leap被赋值为0,那么下次执行的时候leap就是0,这里
if(leap)
printf("%d ",n);
就不会执行,但是好像没有影响哦 397014622 发表于 2014-9-18 21:59
#include
#include
您这样写的话的确是没什么用,一开始已经int leap=1;赋值了,假如说是直接两层循环实现判断素数,一般就是在后面写一个leap=1
页:
[1]