Plinskin 发表于 2017-7-3 17:21
print "To Find The Sum Of All The Multiples Of 3 Or 5 Below 1000"
counterNum=0
因为题目是1000以下,而你包含了1000,不知我说的对不对{:10_323:}
x=0
y=0
for i in range(0,1000):
if i%3 ==0:
x = x+i
for i in range(0,1000):
if i%5 ==0 and i%3!=0:
y= y+i
print(x+y)
结果为 233168.
本帖最后由 燃烧的发丝 于 2017-7-24 21:45 编辑
// 非枚举算法
//循环333次即可
// 计算时间 为枚举算法的 3分之1 计算结果为233168
#include <iostream>
int main()
{
static int x3 = 3;
static int x5 = 5;
static int x15 = 15;
static int x = 0;
while (true)
{
if (x3 < 1000)
{
x += x3;
x3 += 3;
if (x5 < 1000)
{
x += x5;
x5 += 5;
}
if (x15 < 1000)
{
x -= x15;
x15 += 15;
}
}
else
{
break;
}
}
std:: cout<< "1000以下的自然数中,属于3或5的倍数的数字之和为:" <<
x << std::endl;
}
本帖最后由 燃烧的发丝 于 2017-7-24 21:46 编辑
{:5_97:} {:5_97:}
学了小甲鱼的数据结构与算法 思维还真是不一样了;
#include<stdio.h>
int main()
{
int sum = 0,i;
for(i = 1;i < 1000;i++)
{
if((i % 3 == 0 ) || (i % 5 == 0))
{
sum += i;
}
else
{
continue;
}
printf("sum = %d\n",sum);
}
结果是233168.
1.桶排序 重复次数为1的数相加 缺点:占内存
2.for循环 执行时间长if(n%3==0)
{
if(n%5==0)
{
s+=n;
break;
}
sum+=n;
}
if(n%5==0&&n%15!=0)
sum+=n;
sum+=s;
sum = 0
for i in range(0,1000):
if(i%3==0) or (i%5==0):
sum += i
else:
sum += 0
print(sum)
sum = 0
for i in range(1001):
if i%3==0 or i%5==0:
sum +=i
print ("1000以内3或者5的倍数的和为:%d" % sum)
sum = 0
for i in range(1000):
if i%3==0 or i%5==0:
sum +=i
print ("1000以内3或者5的倍数的和为:%d" % sum)
一行搞定:
sum()
#include <stdio.h>
int main(void)
{
int i;
int sum = 0;
for (i=1;i<1000;i++)
{
if (i%3 == 0 || i%5 == 0)
{
sum += i;
}
}
printf("1000以下的自然数中,属于3和5的倍数的数字之和:%d", sum);
return 0;
}
gongxiaobo2006 发表于 2015-4-24 14:25
我的结果是233168!哈哈哈哈哈
s=3*sum(1:333)+5*sum(1:200);
s=267333
AArdio编译
import console;
import time.timer
console.setTitle("test");
time.timer.start();
sum = 0;
for(i=3;999;3){
sum += i
}
for(i=5;999;5){
sum += i
}
for(i=15;999;15){
sum -= i
}
console.print(sum);
console.print(time.timer.endTick())
console.pause();
233168
0.45397067070007
请按任意键继续 ...
print(sum())
本帖最后由 编程新血 于 2017-11-1 20:18 编辑
python3:
l3=list(range(3,1000,3))
l5=list(range(5,1000,5))
listz=list(set(l3+l5))
print(sum(listz))
取3的倍数列表,与5的倍数列表组合一起,去掉重复选项,
结果是233168
#include <stdio.h>
int main(void)
{
int i;
long sum=0;
for(i=1; i<1000; i++)
{
if (i%3==0 || i%5==0)
{
sum=sum+i;
}
}
printf("%ld",sum);
}
1 #include <stdio.h>
2
3 int multiSum(int, int);
4
5 int multiSum(int max, int n)
6 {
7 int total, maxMulti;
8
9 maxMulti = max / n;
10 return(maxMulti * (maxMulti + 1)) / 2 * n;
11 }
12
13 int main(void)
14 {
15 int total;
16 total = multiSum(1000, 3) + multiSum(1000, 5) - multiSum(1000, 3 * 5);
17 printf("%d\n", total); //234168
18 return 0;
19 }
#include<stdio.h>
int main()
{
int i,sum=0;
for(i=0;i<1000;i++)
{
if(i%3==0||i%5==0)
{
sum=sum+i;
}
}
printf("%d\n",sum);
return 0;
}
sum1 = sum()
def f(n):
s = 0
for i in range(n):
if i % 3 == 0 or i % 5 == 0:
s += i
return s
num = 1000
result = f(1000)
print('1000以内,3或5的倍数的数字之和为:%d' % result)