题意:

完全数是指真因数之和等于自身的那些数。例如,28的真因数之和为1 + 2 + 4 + 7 + 14 = 28,因此28是一个完全数。

一个数n被称为亏数,如果它的真因数之和小于n;反之则被称为盈数。

由于12是最小的盈数,它的真因数之和为1 + 2 + 3 + 4 + 6 = 16,所以最小的能够表示成两个盈数之和的数是24。通过数学分析可以得出,所有大于28123的数都可以被写成两个盈数的和;尽管我们知道最大的不能被写成两个盈数的和的数要小于这个值,但这是通过分析所能得到的最好上界。

找出所有不能被写成两个盈数之和的正整数,并求它们的和。

思路:此题与欧拉21题相似


/*************************************************************************
> File Name: euler023.c
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年06月30日 星期五 19时30分05秒
************************************************************************/ #include <stdio.h>
#include <inttypes.h> #define MAX_N 28123 int32_t isPrime[MAX_N + 10] = {0}; // 记录最小素数幂次方isPrime[24] = 8 (2^3)
int32_t prime[MAX_N + 10] = {0}; // 记录素数
int32_t d[MAX_N + 10] = {0}; // 记录整数分解约数和
int32_t abundantSum[MAX_N + 10] = {0};
int32_t vis[MAX_N + 10] = {0}; void Init() {
for (int32_t i = 2 ; i <= MAX_N ; i++) {
if (!isPrime[i]) {
isPrime[i] = i;
prime[++prime[0]] = i;
d[i] = i + 1;
}
for (int32_t j = 1 ; j <= prime[0] ; j++) {
if (i * prime[j] > MAX_N) break;
if (i % prime[j] != 0) { // 在prime[j]还小于i的最小素因子时
isPrime[i * prime[j]] = prime[j];
d[i * prime[j]] = d[i] * d[prime[j]];
} else {
isPrime[i * prime[j]] = isPrime[i] * prime[j];
d[i * prime[j]] = d[i] * (isPrime[i] * prime[j] * prime[j] - 1) / (isPrime[i] * prime[j] - 1);
break;
}
}
}
for (int32_t i = 1 ; i <= MAX_N ; i++) {
d[i] -= i;
if (d[i] <= i) continue;
abundantSum[++abundantSum[0]] = i;
}
for (int32_t i = 1 ; i < abundantSum[0] ; i++) {
for (int32_t j = i + 1 ; j <= abundantSum[0] ; j++) {
if (abundantSum[i] + abundantSum[j] > MAX_N) continue;
vis[abundantSum[i] + abundantSum[j]] = 1;
}
}
}
int32_t main() {
Init();
int32_t sum = 0;
for (int32_t i = 1 ; i <= MAX_N ; i++) {
if (vis[i]) continue;
sum += i;
}
printf("%d\n",sum);
return 0;
}

Project Euler 23 Non-abundant sums( 整数因子和 )的更多相关文章

  1. Project Euler P105:Special subset sums: testing 特殊的子集和 检验

    Special subset sums: testing Let S(A) represent the sum of elements in set A of size n. We shall cal ...

  2. Python练习题 040:Project Euler 012:有超过500个因子的三角形数

    本题来自 Project Euler 第12题:https://projecteuler.net/problem=12 # Project Euler: Problem 12: Highly divi ...

  3. [project euler] program 4

    上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...

  4. Python练习题 029:Project Euler 001:3和5的倍数

    开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...

  5. Project Euler 第一题效率分析

    Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...

  6. Python练习题 045:Project Euler 017:数字英文表达的字符数累加

    本题来自 Project Euler 第17题:https://projecteuler.net/problem=17 ''' Project Euler 17: Number letter coun ...

  7. Python练习题 039:Project Euler 011:网格中4个数字的最大乘积

    本题来自 Project Euler 第11题:https://projecteuler.net/problem=11 # Project Euler: Problem 10: Largest pro ...

  8. Project Euler 9

    题意:三个正整数a + b + c = 1000,a*a + b*b = c*c.求a*b*c. 解法:可以暴力枚举,但是也有数学方法. 首先,a,b,c中肯定有至少一个为偶数,否则和不可能为以上两个 ...

  9. Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.

    In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...

随机推荐

  1. 百度之星2014资格赛 1003 - Xor Sum

    先上代码: Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)T ...

  2. 0807再整理SQL执行流程

    转自http://www.cnblogs.com/annsshadow/p/5037667.html MySQL架构总览->查询执行流程->SQL解析顺序   前言: 一直是想知道一条SQ ...

  3. djanjo ORM 一对多、多对多

    一.表操作之一对多 定义表结构:定义了UserType.两张表UserInfo,如下: from django.db import models class UserType(models.Model ...

  4. leetcode || 56、 Merge Intervals

    problem: Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3], ...

  5. &lt;LeetCode OJ&gt; 326. Power of Three

    326. Power of Three Question Total Accepted: 1159 Total Submissions: 3275 Difficulty: Easy 推断给定整数是否是 ...

  6. C++静态变量本身可否是一个实例对象

    一般书上总是用int来举例,那个太简单.如果静态变量本身可否是一个实例对象呢?应该是可以,但是这样涉及到它的构造函数以及它内部的静态变量如何初始化两个问题,换而言之,这个静态变量本身应该如何初始化?这 ...

  7. POJ3349 Language: Snowflake Snow Snowflakes

    POJ3349 Language: Snowflake Snow Snowflakes 题目:传送门 题解: 链表+hash的一道水题 填个坑补个漏... 代码: #include<cstdio ...

  8. 纯JS监听document是否加载完成

    欢迎加入前端交流群交流知识&&获取视频资料:749539640 概述 一个document 的 Document.readyState 属性描述了文档的加载状态. 一个文档的 read ...

  9. ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware

    转自:ServletContextAware.ServletRequestAware.ServletResponseAware.SessionAware Struts 2提供了Aware接口.Awar ...

  10. php处理传值为空

    if(isset($_GET['id'])){}else{}isset($_GET['id'])==null