【发布时间】:2021-02-20 19:21:33
【问题描述】:
问题如下:
编写一个程序,提示用户输入一个正整数 m,它表示一本书中所有页码的总和。该程序打印该数字是否为有效总和。例如,整数 21 是页码的有效总和,因为 1 + 2 + 3 + 4 + 5 + 6 = 21。整数 25 不是有效总和,因为前 6 个页码的总和是 21,下一个页码为 7,因此前 7 个页码的总和应为 28。如果 m 是所有页码的有效总和,则必须有一个整数 n,使得 1+2+3+ ... + n = n( n+1)/2 = m
这是我的代码:
#include <iostream>
using namespace std;
int main() {
int num,n=0,sum=0;
cout<<"Enter a positive integer"<<endl;
cin>>num;
for (int i=1;i<num;i++){
sum+=i;
n++;
if (sum==num)
break;
}
if (((n*(n+1))/2)==num){
cout<<"This number is valid";
}
else{
cout<<"This number is invalid";
}
}
代码正在运行,但我需要另一种方法来实现这个程序,而不使用循环,而只使用选择语句。可以这样做吗??
【问题讨论】:
-
您基本上是在问如何测试
num是否为triangular number。您可以在 Stack Overflow 或互联网上搜索“测试三角数”以获得答案。