Optimization 如何优化寻找友好对的代码

Optimization 如何优化寻找友好对的代码,optimization,number-theory,Optimization,Number Theory,请参阅我用来查找我认为所有友好对(n,m),n

请参阅我用来查找我认为所有友好对(n,m),n的所有优化技术

使用

它可以在不到一秒钟的时间内找到10^9以内的所有友好数字。

\include
#include<stdio.h>
#include<stdlib.h>
int sumOfFactors(int );

int main(){
    int x, y, start, end;
    printf("Enter start of the range:\n");
    scanf("%d", &start);
    printf("Enter end of the range:\n");
    scanf("%d", &end);

    for(x = start;x <= end;x++){
        for(y=end; y>= start;y--){
            if(x == sumOfFactors(y) && y == sumOfFactors(x) && x != y){
                printf("The numbers %d and %d are Amicable pair\n", x,y);
            }
        }
    }   
    return 0;
}

int sumOfFactors(int x){
    int sum = 1, i, j;
    for(j=2;j <= x/2;j++){
        if(x % j == 0)
            sum += j;
    }
    return sum;
}
#包括 综合要素(综合要素); int main(){ 整数x,y,开始,结束; printf(“输入范围的开始:\n”); scanf(“%d”,开始(&S); printf(“输入范围的结尾:\n”); scanf(“%d”,结束)(&end); 对于(x=开始;x=开始;y--){ 如果(x==总和因子(y)&&y==总和因子(x)&&x!=y){ printf(“数字%d和%d是友好的一对”\n“,x,y); } } } 返回0; } 综合要素(综合x){ int sum=1,i,j;
对于(j=2;j你这样做是为了Euler项目还是其他竞赛?@XML No.作为优化练习。到目前为止,我一直致力于优化函数。这是一个非常简短的片段@belisarius:但在查找这些对时没有使用过滤器?总之,非常有趣的网站——不仅仅是第9章!提问者提到他们使用的是Python-它是最好用那种语言来回应。:)
def findSumOfFactors(n):
    sum = 1
    for i in range(2, int(n / 2) + 1):
        if n % i == 0:
            sum += i
    return sum

start = int(input())
end = int(input())

for i in range(start, end + 1):
    for j in range(end, start + 1, -1):
        if i is not j and findSumOfFactors(i) == j and findSumOfFactors(j) == i and j>1:
            print(i, j)