优化代码,使其在每次循环for

时间:2017-12-02 17:49:27

标签: c

我接受了这项功课,如果可能的话,我正在考虑如何优化它。

#include "stdio.h"
#include "math.h"
int funk(n){
    int a=1,b=1,j,i,flag=0;
    for(a=1;a<n;a++){
        for(b=1;b<n;b++){
            if((pow(a,2)*b)-a+b+(a*pow(b,2))==n){    
                for(i=1;i<a;i++){
                    for(j=i;j<a;j++){
                        if(a%i==0 && a%j==0 && b%(i+j)==0){
                                printf("For n= %d equation has solutions %d and %d \n",n,a,b);
                                flag = 1;

                        }
                    }
                }
            }
        }
    }
    if(flag==2){
        printf("For n= %d equation has no solution \n",n);
    }
    return 0;
}
int main(){
    int n,i;
    printf("Input n ");
    scanf("%d",&n);
    for(i=1;i<n+1;i++){
        funk(i);
    }
    return 0;
}

我在考虑funk()中的循环,所以当我在n中输入main()并呼叫funk()时,例如n是10000次执行时间很长因为每次尝试都从1开始。

1 个答案:

答案 0 :(得分:0)

所以不要让它每次都重新开始。你不需要在main中使用循环,你可以将func更改为:

int funk(n){
    int a=1,b=1,j,i,flag=0;
    for(a=1;a<n;a++){
        int n2= a;
        for(b=1;b<n2;b++){
            if((pow(a,2)*b)-a+b+(a*pow(b,2))==n2){   

并将其称为

funk(n+1);