dengyunyun 发表于 2008-7-20 14:17

求助一个小题目?

求100以内的素数,我写了个程序,编译通过了,运行结果只到31为止,不知道问题出在哪?知道的朋友帮看下,感激不尽
#include<stdio.h>
void main()
{
int a[100],i,j,m;
for(i=0;i<100;i++)
   {
    a[i]=i+1;
    if(a[i]==1) continue;
    m=1;
    for(j=2;j<a[i];j++)
    m=(a[i]%j)*m;
    if(m)
    printf("%d\n",a[i]);
   }
}

dengyunyun 发表于 2008-7-20 14:36

我一直在线等啊,朋友们花上你们宝贵的5分钟指导一下小弟吧!!

qxykzx 发表于 2008-7-20 14:48

我知道了

朋友你试着,单步跟踪就知道了,比如37模5等于2,这时m就为2,再模7,m为4这样依次类推m值会越来越大,最后m为一个负值,所以31后的数字都不会显示出来。要改算法,不过你想的这个算法,蛮有创意的。不知道我讲清楚没有,哈哈。。。共同努力!

dengyunyun 发表于 2008-7-20 14:51

谢谢了,朋友,我知道了!

dengyunyun 发表于 2008-7-20 15:35

改好了
#include<stdio.h>

void main()
{
int a[100],i,j,m;
for(i=0;i<100;i++)
   {
    a[i]=i+1;
    if(a[i]==1) continue;
    for(j=2;j<a[i];j++)
      {m=a[i]%j;
       if(m==0) break;
      }
    if(m)
    printf("%d\n",a[i]);
   }
}

页: [1]

编程论坛