需要两个办法,100以内找出质数?

如题所述

方法一:从2到100,对每个数依次判断是否为质数,对任意数n,依次除以从2、3、4、...、直到sqrt(n)向后取整;以31为例,sqrt(31)=5.56776....,所以对31除以2、3、4、5、6,结果发现都无法整除,所以31为质数;依次可以得到所有质数。

方法二:从另一个角度出发,找出所有的合数,剩下的就是质数了。具体就是类似九九乘法表列出2~100中所有元素相互乘积,如
2*2、2*3、2*4、2*5、...、2*49、2*50 再往后就超过100了,换3继续
3*3、3*4、3*5、...、3*32、3*33 再往后就超过100了,换4继续
4*4、4*5、...、4*24、4*25 以此类推
... ...
8*8、8*9、8*10、8*11、8*12
9*9、9*10、9*11
10*10
至此,已将所有100以内的合数找出(有重复),只要剔除这些数,剩下的就都是质数啦。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-13

#include<stdio.h>

int isprime(int n)

{for(int i=2;i*i<=n;i++)

   if(n%i==0)return 0;

 return n>1;  

}

int main()

{ int i;

  for(i=2; i<100; i++)

  if(isprime(i))

    printf("%4d",i);

  return 0;

}

================

#include<stdio.h>

int main()

{ int i,j;

  for(i=2; i<100; i++)

  { for(j=2; j*j<=i; j++)

      if(i%j==0)break;

    if(j*j>i)

      printf("%4d",i);

  }

  return 0;

}

本回答被网友采纳