C++ C++;,输出从2到20的数字的适当除数之和
我的问题是这样的 对于2到20之间的数字,输出正确的除数及其和 所以它应该是这样的: 2:1=1 3:1=1 4:1+2=3 5:1=1 6:1+2+3=6 20:1+2+4+5+10=23 这是我到目前为止写的:C++ C++;,输出从2到20的数字的适当除数之和,c++,C++,我的问题是这样的 对于2到20之间的数字,输出正确的除数及其和 所以它应该是这样的: 2:1=1 3:1=1 4:1+2=3 5:1=1 6:1+2+3=6 20:1+2+4+5+10=23 这是我到目前为止写的: #include <iostream> int main () { int a=2; int sum=1; while (a<=10){ std::cout<<a<<": "; for(int b=1; b<a; b=b+1)
#include <iostream>
int main () {
int a=2;
int sum=1;
while (a<=10){
std::cout<<a<<": ";
for(int b=1; b<a; b=b+1)
{
if(a%b == 0)
{
std::cout<<b<<" + ";
sum+=b;}
if (b == a-1){
std::cout<<"= "<<sum<<"\n";
}
}
a++;
}
return 0;
}
#包括
int main(){
INTA=2;
整数和=1;
while(a您需要在while循环的每次迭代开始时将sum的值重置为零,以避免多重和问题
对于额外的+,您可以在“b”值之前而不是之后打印“+”,并且仅当b>1时(保证在当前b值之前有一个打印值)。您需要在while循环的每次迭代开始时将sum值重置为零,以避免多和问题
对于额外的+,您可以在“b”的值之前而不是之后打印“+”,并且只有在b>1的情况下(保证在当前的b值之前有一个打印的值)。尝试类似的方法,它使用此方法不在除数的最后一项之后添加+
:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
std::vector<int> properDivisors ( int number ) {
std::vector<int> divisors ;
for ( int i = 1 ; i < number / 2 + 1 ; i++ )
if ( number % i == 0 )
divisors.push_back( i ) ;
return divisors ;
}
int main()
{
for(size_t i = 2; i <= 20; ++i)
{
std::vector<int> divisors = properDivisors(i);
std::cout << i << ": ";
const char *padding = "";
for (auto iter = divisors.begin(); iter != divisors.end(); ++iter) {
std::cout << padding << *iter;
padding = " + ";
}
int sum = 0;
for (auto& n : divisors)
sum += n;
std::cout << " = " << sum;
std::cout << std::endl;
}
}
试试它试试类似的方法。它使用此方法不在最后一项除数
之后添加+
:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
std::vector<int> properDivisors ( int number ) {
std::vector<int> divisors ;
for ( int i = 1 ; i < number / 2 + 1 ; i++ )
if ( number % i == 0 )
divisors.push_back( i ) ;
return divisors ;
}
int main()
{
for(size_t i = 2; i <= 20; ++i)
{
std::vector<int> divisors = properDivisors(i);
std::cout << i << ": ";
const char *padding = "";
for (auto iter = divisors.begin(); iter != divisors.end(); ++iter) {
std::cout << padding << *iter;
padding = " + ";
}
int sum = 0;
for (auto& n : divisors)
sum += n;
std::cout << " = " << sum;
std::cout << std::endl;
}
}
试试看好吧,你只有一个sum
变量,你一直在添加它,但从未重置。好吧,你只有一个sum
变量,你一直在添加它,但从未重置。
2: 1 = 1
3: 1 = 1
4: 1 + 2 = 3
5: 1 = 1
6: 1 + 2 + 3 = 6
7: 1 = 1
8: 1 + 2 + 4 = 7
9: 1 + 3 = 4
10: 1 + 2 + 5 = 8
11: 1 = 1
12: 1 + 2 + 3 + 4 + 6 = 16
13: 1 = 1
14: 1 + 2 + 7 = 10
15: 1 + 3 + 5 = 9
16: 1 + 2 + 4 + 8 = 15
17: 1 = 1
18: 1 + 2 + 3 + 6 + 9 = 21
19: 1 = 1
20: 1 + 2 + 4 + 5 + 10 = 22