gpt4 book ai didi

c - 优化代码,使其每次经过 for 循环时不再从 1 开始

转载 作者:行者123 更新时间:2023-11-30 16:38:05 25 4
gpt4 key购买 nike

我收到了这个作业,我正在考虑如果可能的话如何优化它。

#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() 中的 for 循环,因此当我在 main() 中输入 n 并调用 funk(),例如 n 是 10000,执行时间很长,因为每次尝试都从 1 开始。

最佳答案

所以不要每次都让事情重新开始。您不需要 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);

关于c - 优化代码,使其每次经过 for 循环时不再从 1 开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com