龙龙龙龙龙龙 发表于 2020-4-25 15:32:54

C++ 求n以内降序前k项之和

求n以内降序前k项之和
样例:
测试输入:9994 7
预期输出:9973 9967 9949 9941 9931 9929 9923 69613
测试输入:13 9
预期输出:13 11 7 5 3 2 41
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int n, k, sum=0, t=0;
        cin >> n >> k;
        for(int i = n; i>2; i--)
        {        int m=0;
                for(int j = 2; j < n/2; j++)
                {
                        if(i % j==0)
                        m++;        //取余得0,即能整除,m+
                }

                if(m==0) //为0,i为素数
                {
                        t++; //已判断的素数个数
                        if(i>=2 && t<=k)
                        {
                        printf("%d ",i);
                        sum += i;
                        }
                        else break;
                }       
        }
        cout << "=" <<sum;
    return 0;
}
样例第一个能过,第二个不行,不知道问题出在哪里了

人造人 发表于 2020-4-25 15:46:15

看不懂问题,我需要解释一下这个
测试输入:9994 7
预期输出:9973 9967 9949 9941 9931 9929 9923 69613

这个输入是怎么算出这个结果的

人造人 发表于 2020-4-25 16:00:27

没看懂题意,不过我调试的时候
i=5的时候,m是1
这显然不对,第10行是不是写错了?
for(int j = 2; j < n/2; j++)

应该是?
for(int j = 2; j <= i/2; j++)

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int n, k, sum=0, t=0;
    cin >> n >> k;
    for(int i = n; i>=2; i--)
    {      int m=0;
      for(int j = 2; j <= i/2; j++)
      {
            if(i % j==0)
                m++;      //取余得0,即能整除,m+
      }

      if(m==0) //为0,i为素数
      {
            t++; //已判断的素数个数
            if(i>=2 && t<=k)
            {
                printf("%d ",i);
                sum += i;
            }
//            else break;
      }      
    }
    cout << "=" <<sum;
    return 0;
}

龙龙龙龙龙龙 发表于 2020-4-25 16:13:31

人造人 发表于 2020-4-25 16:00
没看懂题意,不过我调试的时候
i=5的时候,m是1
这显然不对,第10行是不是写错了?


啊 对的 那里错了
题意是找n以内的素数降序,前k个输出,最后相加
比如13 5
13以内的素数是:
13 11 7 5 3 2
1   23 4 5 6(k)
所以是:13 11 7 5 3 =39

人造人 发表于 2020-4-25 16:20:51

龙龙龙龙龙龙 发表于 2020-4-25 16:13
啊 对的 那里错了
题意是找n以内的素数降序,前k个输出,最后相加
比如13 5


嗯,大概理解了题意了

龙龙龙龙龙龙 发表于 2020-4-25 16:23:29

人造人 发表于 2020-4-25 16:20
嗯,大概理解了题意了

出来了 主要就是把n改成i,太粗心,非常感谢!
页: [1]
查看完整版本: C++ 求n以内降序前k项之和