这个程序整体来讲,没什么难点,唯一的bug是pow()这个函数,用int作为参数返回的结果不对= =这个必须debug才能看到
#include <stdio.h> #include <stdlib.h> #include <math.h> typedef int Status; long powme(int k); int isPrime(long num); int main() { int num,commandCount; scanf("%d %d",&num,&commandCount); char level[num]; int i; for(i=0;i<num;i++){ scanf("",&arr[i]); } int flag = 1; for(i=0;i<l-k+1;i++){ long a = 0; int j; for(j = i;j<k+i;j++){ long temp = powme(k+i-j-1); temp = temp *arr[j]; a += temp; } if(isPrime(a)){ printf("%0*ld",k,a); flag = 0; break; } } if(flag){ printf("404"); } return 0; } int isPrime(long num){ int flag = 1; int i; if(num == 1||num == 0){ return 0; } if(num == 2){ return 1; } for(i = 2;i<sqrt(num);i++){ if(num % i == 0){ flag = 0; break; } } return flag; } long powme(int k){ long a = 1; int i; for(i = k-1;k>0;k--){ a *=10; } return a; }