void main()
{
int sum=0;
int i;
for(i=1;i<1000;i++)
{
if(i%3==0||i%5==0)
{
sum+=i;
}
}
printf("%d\n",sum);
} S =0
for i in range(0,1000):
if i %3 ==0 ori%5 == 0:
S = S + i
print(S)
C语言的
#include<stdio.h>
int main(){
int sum=0;
for (int i=3;i<=1000;i++){
if (i%3==0||i%5==0){
sum+=i;
}
}
printf("%d\n",sum);
return 0;
}
答案是234168{:5_109:}
def p1():
temp = 0
for i in range(1000):
if not i%3 or not i%5:
temp += i
print(temp)
p1()
233168
count = 0
for i in range(20):
if i %3 ==0 or i %5 ==0:
count +=i
print(count) 我的答案是233168。
C语言:
#include<stdio.h>
int main()
{
int sum = 0;
int i;
for (i = 1; i < 1000; i++)
if (i%3 == 0 || i%5 == 0)
sum += i;
printf ("%d",sum);
return 0;
} 蓝炎彼岸花 发表于 2019-5-31 19:36
我的答案是233168。
C语言:
好像这样1000没算到,是不是要i <= 1000 int main()
{
int i;
int sum1=0,sum2=0,sum3=0;
for(i=1;i<1000;i++)
{
if(i%3==0)
{
sum1+=i;
}
}
for(i=1;i<1000;i++)
{
if(i%5==0&&i%3!=0)
{
sum2+=i;
}
}
sum3=sum1+sum2;
printf("%d\n",sum3);
} 本帖最后由 doodu 于 2019-6-14 10:09 编辑
'''判断一个数值范围内,几个数字共同倍数的数字的和'''
def sum_Mul(num_region, a, b):
arr = []
for i in range(0,num_region):
if not(i%a) or not(i%b):
arr.append(i)
arr = set(arr) #实际上判断语句中是‘或’,满足一个条件即可。
sum_end = sum(arr)
return sum_end
print(sum_Mul(1000, 3, 5))
效率有点低,但是很安全,使用len()可以查询列表里面收集的数字个数,
----是相等的!!! #include<stdio.h>
int main(){
int len3 = 1000 / 3;
int len5= 1000 / 5;
int len15 = 1000 / 15;
printf("%d",(1 +len3) * len3 / 2 * 3 + (1 + len5) * len5/ 2 * 5 - (1 + len15) * len15 / 2 * 15);
return 0;
}
我觉得不用循环 直接用高斯的等差数列求和 直接求解 a=input('please input natural number');
s=0;
for i=1:a-1
if mod(i,3)==0|| mod(i,5)==0
s=s+i;
end
end
disp(s) a = (3 + 999) * (999 / 3) / 2
b = (5 + 995) * (995 / 5) / 2
c = (15 + 990) * (990 / 15) / 2
print(int(a + b - c)) 本帖最后由 永恒的蓝色梦想 于 2020-4-18 12:45 编辑
Python:print(sum(i for i in range(1,1000) if not(i%3 and i%5)))
C++#include<iostream>
using namespace std;
int main() {
int sum = 0;
for (int i = 1; i < 1000; i++) {
sum += !(i % 3 && i % 5);
}
cout << sum << endl;
return 0;
} public static void main(String args[]){
int total=0;
for (int i=0;i<1000;i++){
if(i%3==0||i%5==0){
total+=i;
}
}
System.out.println(total);
}
结果是233168
大家帮我看看吧~
本帖最后由 爱因斯坦程序员 于 2019-7-24 11:02 编辑我的想法是这样的,但是不知道错在哪里,答案和暴力相加得出来的答案不一样,希望有小伙伴可以帮我看看我到底钻到哪个牛角尖里去了{:10_266:}{:10_266:}#include <stdio.h>
#include <stdlib.h>
int main(){
int s,s3,s5;
int n5=999/5,n3=999/3;//分别得出1000一下共有几个倍数
s3=((n3*3)+((n3*(n3-1))/2))*3;//等差数列求和公式
s5=((n5*5)+((n5*(n5-1))/2))*5;
s=s3+s5;//将3的倍数和5的倍数相加
printf("%d\n",s);
} 我的想法是这样的,但是不知道错在哪里,答案和暴力相加得出来的答案不一样,希望有小伙伴可以帮我看看我到底钻到哪个牛角尖里去了{:10_266:}{:10_266:}#include <stdio.h>
#include <stdlib.h>
int main(){
int s,s3,s5;
int n5=999/5,n3=999/3;//分别得出1000一下共有几个倍数
s3=((n3*3)+((n3*(n3-1))/2))*3;//等差数列求和公式
s5=((n5*5)+((n5*(n5-1))/2))*5;
s=s3+s5;//将3的倍数和5的倍数相加
printf("%d\n",s);
}
爱因斯坦程序员 发表于 2019-7-24 11:02
我的想法是这样的,但是不知道错在哪里,答案和暴力相加得出来的答案不一样,希望有小伙伴可以帮我看看我到 ...
3和5的倍数有重叠部分 永恒的蓝色梦想 发表于 2019-7-24 15:28
3和5的倍数有重叠部分
就是说要把三和五重叠的部分扣出来才对,对吧!!{:10_297:} 爱因斯坦程序员 发表于 2019-8-1 16:18
就是说要把三和五重叠的部分扣出来才对,对吧!!
是的 永恒的蓝色梦想 发表于 2019-8-1 16:31
是的
哈哈 谢谢这位兄台{:10_298:}