• 质数和分解


    【题目描述】
    任何大于 1 的自然数 n 都可以写成若干个大于等于 2 且小于等于 n 的质
    数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一
    种质数和的形式。例如,9 的质数和表达式就有四种本质不同的形式:
    9 = 2 + 5 + 2 = 2 + 3 + 2 + 2 = 3 + 3 + 3 = 2 + 7 。
    这里所谓两个本质相同的表达式是指可以通过交换其中一个表达式中
    参加和运算的各个数的位置而直接得到另一个表达式。
    试编程求解自然数 n 可以写成多少种本质不同的质数和表达式。
    【输入描述】
    文件中的每一行存放一个自然数 n(2 < n < 200) 。
    【输出描述】
    依次输出每一个自然数 n 的本质不同的质数和表达式的数目。
    【输入样例】
    200
    【输出样例】

    9845164

    源代码:
    
    #include<cstdio>
    int n,s=1,i[47],f[201]={0}; //200之内,质数有47个。
    int main()
    {
        scanf("%d",&n);
        i[1]=2;
        for (int a=3;a<=n;a++)
        {
            bool t(0);
            for (int b=1;b<=s;b++)
              if (!(a%i[b]))
              {
                  t=true;
                  break;
              }
            if (!t)
              i[++s]=a;
        } //试除法2.0。 
        f[0]=1; //质数本身也是1种方案。
        for (int a=1;a<=s;a++)
          for (int b=i[a];b<=n;b++)
            f[b]+=f[b-i[a]]; //如此奇妙的方法,利用有顺序的逐次拼凑来更新方案数
        printf("%d",f[n]);
        return 0;
    }
  • 相关阅读:
    TensorFlow中使用GPU
    C++内存管理与注意事项
    深入理解Transformer及其源码
    Dropout原理与实现
    指针生成网络(Pointer-Generator-Network)原理与实战
    深度学习中的优化算法总结
    Hadoop伪分布式搭建
    集成学习总结
    模型评估
    基于Spring AOP实现的权限控制
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5326883.html
Copyright © 2020-2023  润新知