急~~~请问这道题怎么做?编程思路(算法)是什么?
编程寻找6个成等差数列且小于160的素数.
#include<stdio.h> int sushu(int n) { int i; int sum=0; if(n==1) return 0; for(i=2;i<=n/2+1;i++) if(n%i==0) sum++; if(sum==0) return 1; else return 0; } int main() { int f[100],num[5]; int j,i,n,k=0,a,b,c,d; for(i=1;i<160;i++) if(sushu(i)==1) f[k++]=i; for(i=0;i<k;i++) for(j=i+1;j<k;j++) for(a=j+1;a<k;a++) for(b=a+1;b<k;b++) for(c=b+1;c<k;c++) for(d=c+1;d<k;d++) { num[0]=f[j]-f[i]; num[1]=(f[a]-f[j]); num[2]=(f[b]-f[a]); num[3]=(f[c]-f[b]); num[4]=(f[d]-f[c]); if(num[0]==num[1] && num[1]==num[2] && num[2]==num[3] && num[3]==num[4]) printf("%d %d %d %d %d %d\n",f[i],f[j],f[a],f[b],f[c],f[d]); } }6重循环,看起来长点,但是很好理解!!!
#include<stdio.h> int sushu(int n) { int i; int sum=0; if(n==1) return 0; for(i=2;i<=n/2+1;i++) if(n%i==0) sum++; if(sum==0) return 1; else return 0; } int main() { int f[100]; int j,i,n,k=0; for(i=1;i<160;i++) if(sushu(i)==1) f[k++]=i; for(i=0;i<25;i++) for(j=1;j<=50;j++) if(sushu(f[i]+j)==1 && sushu(f[i]+j*2)==1 && sushu(f[i]+j*3)==1 &&sushu(f[i]+j*4)==1 && sushu(f[i]+j*5)==1) printf("%d %d %d %d %d %d\n",f[i],f[i]+j,f[i]+2*j,f[i]+3*j,f[i]+4*j,f[i]+5*j); }这样可以吧?和ls的思路差不多啊!!!