|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求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;
- }
复制代码
样例第一个能过,第二个不行,不知道问题出在哪里了
没看懂题意,不过我调试的时候
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;
- }
复制代码
|
|