鱼C论坛

 找回密码
 立即注册
楼主: 欧拉计划

题目1:找出1000以下自然数中3和5的倍数之和

  [复制链接]
发表于 2019-8-1 18:48:11 | 显示全部楼层

感谢支持!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-6 17:20:23 | 显示全部楼层
#include <stdio.h>

int main()
{
    unsigned long long int sum = 0;
    for (int i = 0; i < 1000; i++)
    {
        if (i % 3 == 0 || i % 5 == 0)
        {
            sum += i;
        }
    }
    printf("1000以下的自然数中,属于3和5的倍数的数字之和为%d", sum);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-31 20:22:41 | 显示全部楼层
  1. lst = [i for i in range(1, 1000) if i % 3 == 0 or i % 5 == 0]
  2. print(sum(lst))
复制代码

233168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 16:25:03 | 显示全部楼层
import tkinter as tk
x = 0
for i in range(1,1001):
    if i % 3 == 0 or i % 5 == 0:
        x += i
r = tk.Tk()
tk.Label(r,text = x).pack()
r.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 16:55:57 | 显示全部楼层
233159
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-8 16:30:37 | 显示全部楼层
#include<stdio.h>

void main(){
//1、3的倍数和5的倍数;
//如果我们列出10以内所有3或5的倍数,我们将得到3、5、6和9,这些数的和是23。
//求1000以内所有3或5的倍数的和。
        int i,sum=0;
        for(i=0;i<1000;i++){//1000以内所有整数
                if(i%3==0||i%5==0){//如果能整除3或5,说明是3或5的倍数
                        sum+=i;//把这些数累加起来求出它们的和
                }
        }
        printf("sum=%d\n", sum);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-20 16:01:25 | 显示全部楼层
总结方法有:
1. 暴力法: 从 1 直到 MAX 去试,符合的累加,循环1000次
2. 优化暴力法: 减少循环的次数,例如2次循环的跳距用 3 和 5 来跳,1000/3+1000/5次
3. 公式法: 直接公式套出结果,(最大+最小) * (符合数/2) 得出综合,但出现符个数为单个数的情况,要扣除。最后注意要消除a*b产生的重复

  1. #include <stdio.h>

  2. #define MAX 1000

  3. unsigned int F(unsigned int x);

  4. int main(int argc, char **argv){
  5.         unsigned int a , b , cont=0;
  6.         scanf("%d %d",&a,&b);
  7.         cont+=F(a);
  8.         cont+=F(b);
  9.         cont-=F(a*b);
  10.         printf("%u\n",cont);
  11.        
  12.         return 0;
  13. }

  14. unsigned int F(unsigned int x){
  15.         unsigned int tmp , cont = 0;
  16.         tmp=(MAX-1)/x;
  17.         cont += tmp/2 * (x + tmp*x);
  18.         if((tmp%2) == 1){cont+=(x + tmp*x)/2;};
  19.         return cont;
  20. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-5 15:58:24 | 显示全部楼层
题目不难,应该是为了照顾新手,代码如下:

  1. list1 = [i for i in range(1, 1001)]
  2. list2 = []
  3. for num in list1 :
  4.         if num % 3 == 0 or num % 5 == 0 :
  5.                 list2.append(num)
  6. print(sum(list2))
复制代码


结果为:234168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 22:50:32 | 显示全部楼层
  1. print(sum(
  2.     set([x for x in range(0,1001,3)]+[x for x in range(0,1001,5)])
  3. ))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-2 17:50:12 From FishC Mobile | 显示全部楼层
本帖最后由 傻狍子嗷 于 2019-12-2 17:51 编辑
  1. #include<stdio.h>

  2. int main()
  3. {
  4.     int sum = 0;
  5.     int i;
  6.     for (i = 1; i <= 1000; i++)
  7.     {
  8.         if ((!(i % 3) || !(i % 5)) && !((i % 3) && (i % 5)))
  9.         {
  10.             sum += i;
  11.         }
  12.     }
  13.     printf("结果是 %d", sum);
  14.     return 0;
  15. }
复制代码

结果是 234168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-17 22:33:38 | 显示全部楼层
  1. int Multiples_3and5(int mixnum)
  2. {
  3.     int sum=0;
  4.     for(int i=1;i<mixnum;i++)
  5.     {
  6.         if( ((i%3)==0) || ((i%5)==0) )
  7.         {
  8.             sum += i;
  9.         }
  10.     }
  11.     return sum;
  12. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-31 11:37:04 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    int sum = 0;
    for(int i = 1 ; i<= 1000; i++){
        if(i%3 == 0 ||i%5 ==0){
            sum+=i;
        }
    }
    printf("finaly sum is :%d\n",sum);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-31 16:36:12 | 显示全部楼层
total = 0
for i in range(1000):
    if i % 3==0 or  i % 5==0:
        total += i
print(total)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-10 16:43:05 | 显示全部楼层

小甲鱼可以将每种语言的版本都选出来么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 13:06:39 | 显示全部楼层

#include<stdio.h>

int main(void)
{
        int i,sum=0;
       
        for(i=0;i<1000;i++)
        {
                if(i%3==0||i%5==0)
                        sum = sum + i;
        }
        printf("%d",sum);
       
       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 11:13:26 | 显示全部楼层
  1. x = 0
  2. for i in range(0,1000):
  3.     if 0 == i%5:
  4.         x = x + i
  5.     if 0 == i%3:
  6.         x = x + i
  7.     if 0 == i%3 and 0 == i%5:
  8.         x = x - i

  9. print(x)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-24 01:24:37 | 显示全部楼层
厉害,我都不会啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-24 20:38:13 | 显示全部楼层
233168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 14:55:01 | 显示全部楼层
sum=0
for i in range(0,1000):
    if i%3==0 or i%5==0:
        sum=sum+i
print(sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 15:02:53 | 显示全部楼层
鸡汤不加盐 发表于 2015-12-22 00:05
def getSum():
    sum = 0
    for x in range (1,1000):

def getSum():
    sum = 0
    for x in range (1,1000):
        if x % 3 == 0 or x % 5 == 0:
            sum += x
    return sum
if __name__ == '__main__':
    print(getSum())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 09:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表