你可以先看下书
到底是“出来混迟早要还”还是“杀人放火金腰带”?
#include<stdio.h>//将一个偶数拆分成两个素数 #include<math.h>// 我原先想用开方函数sqrt的,程序中没有用到的话,这里可以不要 int flag=0;//使用flag的目的就是作为标志位的 void ss(int x) { int i=2; for(i=2;i<x;i++) { if(x%i==0) break; } if(i==x) flag=1;//意思是如果如果i与x相等,说明x是素数,因为前面for中一直没有跳出 } void ss(int x); void main() { int i,j,n; printf("请输入一个大于4的偶数:"); scanf("%d",&n); for(i=3;i<=(n/2);i+=2) { j=n-i; ss(i); if(flag==1)//这里是判断标志位是否为1,如果是,则表示i为素数 { flag=0;//因为前面使用了素数判断,所以使用过后,标志位应该清0 ss(j); if(flag==1)//同样,这里也是为了判断j是否为素数的 printf("%d能被拆成的两个素数分别为:%d,%d\n",n,i,j); } flag=0; //同样,这里因为前面对j进行了判断,所以应该在判断完毕后,对标志位进行清零炒作 printf("\n"); } }
if(i==x) flag=1;//意思是如果如果i与x相等,说明x是素数,因为前面for中一直没有跳出