问题标题: 酷町堂:天梯的有一道很烦的题

0
0
已解决
许金夫
许金夫
初级天翼
初级天翼

这道题好烦啊,谁来帮忙

许金夫在2019-09-20 22:34:41追加了内容

题目描述 Description

小华太希望和小新一起共进晚餐了,但是小新告诉小华说,如果想共进晚餐是有条件的。条件就是需要告诉他N的所有因数的和。这里的因数包括1和N本身。小华很高兴,因为这个问题他很早就会了。但是当他看到小新给的数字的时候,他懵了。

输入描述 Input Description

 

第一行一个数N

 

输出描述 Output Description

 

输出一个数,N的所有因数的和

 

样例输入 Sample Input

 

12

 

样例输出 Sample Output

 

28

许金夫在2019-09-22 10:10:26追加了内容

对了,这道题我是超时90分

#include<iostream>
using namespace std;
int main()
{
    int n,c=1,i,sum;
    cin>>n;
    sum=1+n;
    for(i=2;i<=n/2;i++)
    {
        if(n%i==0)
        {
            sum+=i;
        }
    }
    cout<<sum;
    return 0;
}


0
已采纳
吕若朴
吕若朴
中级光能
中级光能

你的循环判断次数太多了,   

 

应改为:

for(int i=2;i*i<=n;i++){
    if(n%i==0&&n/i!=i)sum+=i+n/i;
    else if(n%i==0)sum+=i;
}

即若n模i为0且i不是n的平方根,sum就同时加上i和n/i,

否则,若是n的平方根,则只加上i。

0
0
0
0
吕若朴
吕若朴
中级光能
中级光能

你的循环判断次数太多了,   

 

应改为:

for(int i=2;i*i<=n;i++){
    if(n%i==0&&n/i!=i)sum+=i+n/i;
    else if(n%i==0)sum+=i;
}

即若n模i为0且i不是n的平方根,sum就同时加上i和n/i,

否则,若是n的平方根,则只加上i。

0
0
董子墨
董子墨
中级天翼
中级天翼

我自己写的代码,应为你没给题号,所以我只试了样例。

循环(int i=1;i<=n;i++)
		if(n%i==0)s+=i;//s是计数器

 

董子墨在2019-09-21 09:03:02追加了内容

s和n最好定义成超长整型

董子墨在2019-09-22 18:05:09追加了内容

刚刚刷到这道题,是2685   条件

董子墨在2019-09-22 18:07:46追加了内容

给你推荐一个网址,https://wenda.codingtang.com/questions/3649/

我要回答