素数的C语言程序怎么做?

如题所述

素数,也叫质数,就是指除了1和该数本身以外,不能被其他任何整数整除的正数。

 #include<stdio.h>#include<math.h>void main(){    int m, k, i, n=0;    for(m=1; m <= 200; m=m+2)    {        k = sqrt(m);        for(i=2; i <= k; i++)        if(m % i == 0)    break;        if(i >= k + 1)        {            printf("%5d",m);            n = n + 1;

素数

所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数

另外判断方法还可以简化。m不必呗2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。如果m不能被2~√m间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。(原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。例如16能被2,4,8整除,16=2*8,2小于4,8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-27
很简单的,多用几次for和if的嵌套就好了,具体如下:

#include "stdio.h"
void main()
{
 int a,b;
 int i,n;
 int flag=1;
 printf("请输入上限:");
 scanf("%d",&a);
 printf("请输入下限:");
 scanf("%d",&b);

 printf("%d到%d之间的素数为:",a,b);
 for (i=a;i<=b;i++) {
  flag=1;
  for (n=2;n<i;n++) {
   if (i%n==0) {
    flag=0;
    }
  }
  if ((flag==1)&&(i!=1)) {
   printf("(%d)",i);
  }
 }
}