500万以内的亲和数

//时间复杂度为O(N*log(N))
//时间复杂度准确做法:
//n * (1 + 1/2 + 1/3 + 1/4 + ..... + 1/n) ~~ N*InN
//所以第二个for循环的时间复杂度约为O(N*log(N))

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <map>
#include <set>
#include <list>
#include <cassert>
#include <string>
#include <climits>
#include <algorithm>
using namespace std;

#define MAXN 5000000
#define Left(i)(2*i+1)
#define Right(i)(2*i+2)
#define _cp(a, b)((a)<(b))
#define min(a, b)((a)<(b)?(a):(b))
#define max(a, b)((a)>(b)?(a):(b))
#define RST(N)memset(N, 0, sizeof(N))

int sum[MAXN+10];   //防止溢出

int main()
{
    freopen("data.out", "w", stdout);
    for(int i=0; i<=MAXN; i++) sum[i]=1;  //1是所有数的真因子,所以全部置1
    //预处理,时间复杂度为O(N*log(N))
    for(int i=2; i+i<=MAXN; i++)
    {
        //500万以下的真因数不超过它的一半
        int j = i + i;   //因为是真因数,所以不能加上本身
        while(j <= MAXN)
        {
            sum[j] += i;  //将所有i的倍数全部加上i
            j += i;
        }
    }
    for(int i=220; i<=MAXN; i++)   //扫描
    {
        //去重,判断是否越界,判断亲和数
 if(sum[i]>i && sum[i]<=MAXN && sum[sum[i]]==i)
        {
            printf("%d %d\n", i, sum[i]);
        }
    }
    return 0;
}

版权声明:感觉我写的还算不错的的话希望你能够动动你的鼠标和键盘为我点上一个赞或是为我奉献上一个评论,在下感激不尽!_______________________________________________________欢迎转载,希望在你转载的同时,添加原文地址,谢谢配合

时间: 2024-10-21 21:26:38

500万以内的亲和数的相关文章

500万已备好,亿万级会员红利也已开放

一卡易重磅推出的[会员+]开放平台将于7月1日正式启动,日前正在接受合作伙伴开发者奖励申请.我们已备好500万,放胆来拿! 十年磨一剑 今朝显锋芒 在互联网的冲击下,残酷的倒闭潮可谓一浪接一浪,而绝大多数的商家不是固守线下,就是盲目崇拜线上,无数的事实证明实体企业/商户只有将线上线下完美融合,两条腿走路才能实现真正的互联网+. 一卡易,作为业内唯一一家线上线下无缝打通的会员营销系统提供商,已深耕会员经济10年,拥有多个研发专利,在业内赢得了极高的品牌认可.尤其2016年以来,随着自助买单.小票红

Python练习题 048:Project Euler 021:10000以内所有亲和数之和

本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable numbers Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n). If d(a) = b and d(b) = a, where a ≠ b

建设一个能承受500万PV/每天的网站如果计算?

PV是什么: PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv. 计算模型: 每台服务器每秒处理请求的数量=((80%*总PV量)/(24小时*60分*60秒*40%)) / 服务器数量 .其中关键的参数是80%.40%.表示一天中有80%的请求发生在一天的40%的时间内.24小时的40%是9.6小时,有80%的请求发生一天的9.6个小时当中(很适合互联网的应用,白天请求多,晚上请求少). 简单计算的结果:((80%*500万)/(24小时*60分*6

Swift给每个开发者赢取500万的机会

[导语] Swift的横空出世,很多有想法的人已经发现其中的蕴含的巨大商机,而很多新手却只是云里雾里,只知道大家最近讨论Swift很欢乐.内行看门道,外行看热闹,说的就是这个理.如果你能把swift用得好,下一个千万富翁就是你! 一.Swift给技术论坛机会 开发者都知道IOS技术论坛,国内算CocoaChina老大,而Android的话当初是eoe论坛,现在开发者比较分散,Apkbus.eoe.以及各个手机厂商上的开发者论坛比如华为.小米也有一些人,还有另外一部分开发者不怎么逛论坛,专门在CS

建设一个能承受500万PV/每天的网站

你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算呢? PV是什么: PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv. 计算模型: 每台服务器每秒处理请求的数量=((80%*总PV量)/(24小时*60分*60秒*40%)) / 服务器数量 . 其中关键的参数是80%.40%.表示一天中有80%的请求发生在一天的40%的时间内.24小时的40%是9.6小时,有80%的请求发生一天的9.

谋哥:秦刚跟我说了一句话值500万!

[谋哥每天一干货,第六十二篇] 昨天晚上和谋天团的新会员麦城堡主(微信号qf825445)聊天,他这个人其实非常有想法,就是我们中国人说的聪明.堡主是70后,私营业主20年,期间涉足建材.餐饮.运输等传统行业,经历了多次失败.他现在感觉移动互联网的大势来临,目前转型搞快餐的订购配送App. 经过和他深入地交流,总结出他失败的原因我觉得是:"脑子太活,想法太多,项目太多." 中国人都非常聪明,经常在一边创这个业的时候,突然想到另外一个点子更加有前(钱)途,于是又去干另外的事情.想法多,野

在10万以内判断,一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,求该数

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果. 程序源代码: #include<stdio.h> #include<math.h> int main() { long int i, x, y; for (i = 1; i<100000; i++) { x = sqrt(i + 100); y = sq

网贷PK彩票:谁能攒出500万佛山

对于财富,没有人能真正不向往.有的人认为大额财富对自己而言太过遥远,只能期待有一天人品爆发,中个500万实现一夜暴富什么的:也有人会为此努力,每天认真工作,并且用手头的闲钱来投资,一天天积攒财富,积少成多. 很多人以为,中500万只需要一次的运气,而攒钱,你要攒到什么时候?对此,我们不妨来算一道数学题. 以时下流行的双色球彩票为例,一等奖的中奖概率为1/(C633·16)=1/17721088,那么最坏的情况就是买了17721008注彩票才中得一注一等奖,以每注2元计算,那么就是35,442,0

热烈庆祝APICloud完成A轮500万美金融资!

国内“云端一体”的移动应用云服务提供商APICloud透露,在2014年初公司创立就获得北极光创投领投的500万美金融资. APICloud致力成为中国领先的移动垂直领域云服务商,帮助中国数百万web开发者转化成移动APP专家,为传统软件企业和中小型创业团队降低开发APP的时间成本.研发成本和试错成本.APICloud通过云服务的形式简化了APP的开发技术,可以让APP的开发周期从一个月缩短为7天.开发者只需要通过“积木拼装”的方式即可完成跨平台原生应用的开发:通过少量编码即可自动生成RESTf