这个题目被我想复杂了,其实本身只是一个数组打印的题目,第一次和第二次均为思路错误导致,第三次,没有注意到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