所以我正在解决这个问题,即用户输入数字X,结果是以这种方式计算的0到X之间所有数字的总和:
例如:
用户输入X>> 80
总和>> (0 + 1 + 2 + 3 + .... 77) - (7,11,14,21,22 ...... 77)+(77)=结果
import java.util.Scanner;
public class testadd {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Please the number greater than 77");
// int a = 0;
int b = keyboard.nextInt();
int sum = 0;
int s = Math.min(0, b);
int e = Math.max(0, b);
System.out.println(s);
System.out.println(e);
int x=0;
for(int i=1; i<e; i++){
if(i%7 ==0 || i%11 ==0){
x=x+i;
System.out.println(x + " values of x");
}
}
while (s <= e) {
sum += s;
s++;
}
System.out.print("The sum of the numbers between " + 0 + " and " + b + " is " + sum);
}
}
答案 0 :(得分:2)
您的总和不包括可被77整除的数字。你的for循环应该是这样的(你不需要while循环):
for (int i=1; i<e; i++) {
if((i%77 == 0) || (i%7 !=0 && i%11 !=0)) {
x=x+i;
System.out.println(x + " values of x");
}
}
即。如果i
可以被77整除,或者i
不可以被i
和7
整除,请将11
添加到总计中。< / p>
答案 1 :(得分:2)
您只需要一个循环来覆盖从1
到e
的所有数字。检查可被7
或11
整除但不能被^
整除的数字的优雅方法是使用long sum = 0;
for (int i = 1; i <= e; ++i) {
if (!((i % 7 == 0) ^ (i % 11 == 0))) {
sum += i;
}
}
(独占或)运算符:
import pandas as pd
df = pd.DataFrame.from_dict({"State": ["ny", "or", "ny", "nm"],
"Counts": [100,300,200,400]})
list_new = df.groupby("State")["Counts"].apply(list).tolist()
print(list_new)
[[400], [100, 200], [300]]