我接受了这项功课,如果可能的话,我正在考虑如何优化它。
#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开始。
答案 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);