zoukankan      html  css  js  c++  java
  • [刷题] PTA 7-51 求n以内最大的k个素数以及它们的和

    PTA

    7-51 求n以内最大的k个素数以及它们的和

     1 #include<stdio.h>
     2 #include<math.h>
     3 
     4 int isPrime(int n);
     5 int main() {
     6     int i,cnt=0,n,k,sum;
     7     scanf("%d%d",&n,&k);
     8     for(i=n; i>=2; i--) {
     9         if(i!=2 && isPrime(i) && cnt<k-1) {
    10             sum += i;
    11             cnt++;
    12             printf("%d+",i);
    13         } else if(i==2 ||(isPrime(i) && cnt==k-1)) {
    14             sum += i;
    15             cnt++;
    16             printf("%d=",i);
    17         }
    18         if(cnt==k) break;
    19     }
    20     printf("%d",sum);
    21 }
    22 
    23 int isPrime(int n) {
    24     int i,flag = 1;
    25     for(i=2; i<=(int)sqrt(n); i++) {
    26         if(n%i==0) flag = 0;
    27     }
    28     return flag;
    29 }

    我的程序,自己写了几个测试都对,但不知为啥在PTA里全错。。。

     1 #include <stdio.h>
     2 #include <math.h>
     3 #define N 10
     4 int isPrime(int p);
     5 int main(){
     6     int n, k, i, count, sum=0;
     7     int maxPrimes[N];
     8     scanf("%d%d", &n, &k);
     9     i = n;
    10     count = 0;
    11     while(i>0){
    12         if(count<k){
    13             if(isPrime(i)){
    14             maxPrimes[count] = i;
    15             sum += i;
    16             count++;
    17             }
    18         }
    19         else{
    20             break;
    21         }
    22         i--;
    23     }
    24     for(i=0; i<count-1; i++){
    25         printf("%d+", maxPrimes[i]);
    26     }
    27     printf("%d=%d", maxPrimes[count-1], sum);
    28 
    29     return 0;
    30 }
    31 int isPrime(int p){
    32     int isPrime=1;
    33     int i;
    34     if(p<2){
    35         isPrime = 0;
    36     }
    37     else{
    38         for(i=2; i<=(int)sqrt(p); i++){
    39         /*若p为合数,则必有不大于sqrt(p)的因子*/
    40             if(p%i == 0){
    41                 isPrime = 0;
    42                 break;
    43             }
    44         }
    45     }
    46     return isPrime;
    47 }

    云上的程序,用数组存储比我的实现更自然,当然PTA结果也全对,差距啊。。

  • 相关阅读:
    18个Java开源CMS系统一览
    冒泡排序
    数据挖掘十大经典算法
    开源Java CMS建站程序推荐
    Oracle
    Oracle Procedure returning Ref Cursor in Entity Framework 4
    Field_II
    SharePoint Video Library
    ORACLE 导入dmp文件
    System.Diagnostics.Process.Start()。它的作用是调用外部的命令
  • 原文地址:https://www.cnblogs.com/cxc1357/p/10771444.html
Copyright © 2011-2022 走看看