PTA
7-51 求n以内最大的k个素数以及它们的和
#include<stdio.h>
#include<math.h> int isPrime(int n);
int main() {
int i,cnt=,n,k,sum;
scanf("%d%d",&n,&k);
for(i=n; i>=; i--) {
if(i!= && isPrime(i) && cnt<k-) {
sum += i;
cnt++;
printf("%d+",i);
} else if(i== ||(isPrime(i) && cnt==k-)) {
sum += i;
cnt++;
printf("%d=",i);
}
if(cnt==k) break;
}
printf("%d",sum);
} int isPrime(int n) {
int i,flag = ;
for(i=; i<=(int)sqrt(n); i++) {
if(n%i==) flag = ;
}
return flag;
}
我的程序,自己写了几个测试都对,但不知为啥在PTA里全错。。。
#include <stdio.h>
#include <math.h>
#define N 10
int isPrime(int p);
int main(){
int n, k, i, count, sum=;
int maxPrimes[N];
scanf("%d%d", &n, &k);
i = n;
count = ;
while(i>){
if(count<k){
if(isPrime(i)){
maxPrimes[count] = i;
sum += i;
count++;
}
}
else{
break;
}
i--;
}
for(i=; i<count-; i++){
printf("%d+", maxPrimes[i]);
}
printf("%d=%d", maxPrimes[count-], sum); return ;
}
int isPrime(int p){
int isPrime=;
int i;
if(p<){
isPrime = ;
}
else{
for(i=; i<=(int)sqrt(p); i++){
/*若p为合数,则必有不大于sqrt(p)的因子*/
if(p%i == ){
isPrime = ;
break;
}
}
}
return isPrime;
}
云上的程序,用数组存储比我的实现更自然,当然PTA结果也全对,差距啊。。