这个题目被我想复杂了,其实本身只是一个数组打印的题目,第一次和第二次均为思路错误导致,第三次,没有注意到N与M之间的关系问题,第四次没有注意到M=0的情况,仍然是通过特殊值的方法发现了错误。以后一定要仔细考虑全面。
#include
#include
int ifprimenumber(int a)
{
int i;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)//这里第二次问题,应该是a%i,求余,而写成了除
return 0;
return 1;
}
int main()
{
int i=2,count=0,N;
scanf("%d",&N);
while(N<=0||N>=(int)pow(10,5))
scanf("%d",&N);//这里第四次问题,解决了N的范围问题,但仍然部分正确
while(i
#include
int ifprimenumber(int a)
{
int i;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)//这里第二次问题,应该是a%i,求余,而写成了除
return 0;
return 1;
}
int main()
{
int i=2,j,count=0,N,primes[100000];
scanf("%d",&N);
for(i=2,j=0;i<=N;i++)//这里在试验的时候出了同样的问题,是“不超过”N
if(ifprimenumber(i))
primes[j++]=i;
for(i=0;i