C语言输出n以内的孪生素数

Python09

C语言输出n以内的孪生素数,第1张

按照你的要求编写的输出n以内的孪生素数的C语言程序如下

#include<stdio.h>

int isPrime(int n){

 int i

 for (i=2i<ni++)

 {

  if (n%i==0) return 0

 } 

 return 1

}

int main(){ 

 int i,n 

 printf("请输入一个正整数:")

 scanf("%d",&n) 

 for(i=2i<=ni++){

  if(isPrime(i)==1 && isPrime(i+2)==1){

   printf("%d和%d是孪生素数\n",i,i+2)

  }

 }

 return 0

}

楼主的两个for循环用的不对,另外整个流程也是有问题的。改正的代码如下:

#include <stdio.h>

#include <math.h>

int main()

{

  int a,b  /* 输入的两个数据范围 */

  int i,j,k

  int num=0, s  /* 素数个数, 素数标志 */

  scanf( "%d %d", &a,&b )

  for( i=ai+2<=bi++ )

  {

      s = 1  /* 先假设i是素数 */

      k = sqrt(i)

      for( j=2j<=kj++ )

      {

          if( i%j == 0 )

          {

              s = 0  /* i不是素数 */

              break

          }

      }

      if( s )

      {

          k = sqrt( i+2 )

          for( j=2j<=kj++ )

          {

              if( (i+2)%j == 0 )

              {

                  s = 0  /* i+2不是素数 */

                  break

              }

          }

          if( s )

          {

              ++num  /* i+2是素数 */

              printf( "第%d个孪生素数[%d,%d]\n", num, i, i+2 )

          }

      }

  }

  return 0

}

二、用GCC编译测试结果: