优化代码,不是从1每次经过for循环
我得到这个活儿,我想如果可能的话如何优化它的时候开始。优化代码,不是从1每次经过for循环
#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;
}
我在想for循环中funk()
所以当我在main()
进入n
并呼吁funk()
和例如n为10000执行时间很长,因为它从1开始,每尝试。
回答:
所以不让这一切从头再来每次。你并不需要在主回路,您可以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);
以上是 优化代码,不是从1每次经过for循环 的全部内容, 来源链接: utcz.com/qa/257559.html