zoukankan      html  css  js  c++  java
  • nyist 517 最小公倍数

    为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。
    但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
    事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。

    我们希望寻找到能除尽1至n的的每个数字的最小整数m.
    输入
    多组测试数据(少于500组)。
    每行只有一个数n(1<=n<=100).
    输出
    输出相应的m。
    样例输入
    2
    3
    4
    
    样例输出
    2
    6
    12
    

    这题一看简单 其实不简单 是个大数问题
    我们首先需要把我们要用的素数进行打表
    然后将我们的最小公倍数进行打表处理,

    由于我们的n最大只有100 而数据大于100 这样我们就要把我们1 -- 100 的数全部进行打表 后面进行查询输出就可以了 这样会省一些时间

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    
    int prime[105];//素数表
    int a[105];//最小公倍数
    int b[105][100];
    
    void prime_judge(int prm[])//打素数表
    {
        int i = 0;
        int j = 0;
        prime[1] = 0;
        for(i = 2; i < 106; i++)
        {
            for(j = i*i; j < 106; j+=i)
                prime[j] = 1;
        }
        int k = 1;
    
    }
    
    void judge()
    {
        int i = 1;
        int j = 0;
        int k = 2;
        for(i = 0; i < 106; i++)
            a[i] = 1;
    
        for(i = 2; i < 106;i++)
            {
                int x = i;
    
                for(j = i; j > 1;)
                {
                    int t = 0;
                    if(prime[j]==0)
                    {
                        if(x%j ==0)
                        {
    
                            while(x%j==0)
                            {
                                t++;
                                x = x/j;
                            }
    
                            int w = 0;
                            int wk = 0;
                            for(w = 1 ; w < k; w++)
                                if(a[w] == j)
                                    wk++;
    
                            if((t - wk) ==0 || t < wk)
                                a[k] *= 1;
                            else
                                a[k] *= pow(j,t-wk);
                        }
                    }
                 j--;
                }
    
                k++;
            }
    }
    
    void print()
    {
        memset(b,0,sizeof(b));
    
        int k =0;
        for(k = 1; k < 106; k++)
            b[k][1] = 1;
    
        int i = 1, j = 0;
    
        for(i = 1; i < 103; i++)
        {
    
            for(j = 1; j <= i; j++)
                {
                    int w = 1;
                    int t = 0;
                    int t1 = 0;
                    int www = 1;
                    while(www < 100)
                    {
    
                        t1 = b[i][w]*a[j] +t;
                        b[i][w] = ( t1) % 10;
                        t = t1 / 10;
                       w++;
                       www++;
                    }
    
    
                }
    
        }
    }
    int main()
    {
        int i = 0;
        prime_judge(prime);
        judge();
        print();
        int n;
        while(scanf("%d",&n) != EOF)
        {
            int flag = 0;
            for(i = 100; i > 0; i--)
                if(b[n][i] || flag)
                {
                    printf("%d",b[n][i]);
                    flag = 1;
                }
    
            printf("\n");
        }
        return 0;
    }
    
  • 相关阅读:
    MySQL8.0新增配置参数
    CF1153F Serval and Bonus Problem
    win10 uwp xaml 绑定接口
    win10 uwp xaml 绑定接口
    Windows Community Toolkit 3.0 新功能 在WinForms 和 WPF 使用 UWP 控件
    Windows Community Toolkit 3.0 新功能 在WinForms 和 WPF 使用 UWP 控件
    win10 uwp 渲染原理 DirectComposition 渲染
    dotnet 从入门到放弃的 500 篇文章合集
    C# ValueTuple 原理
    WPF 使用 Direct2D1 画图入门
  • 原文地址:https://www.cnblogs.com/yyroom/p/2989105.html
Copyright © 2011-2022 走看看