#include #include #include //#define f(x) (x*x*x-2*x*x-x+2) //#define f(x) (x*x-100) #define f(x) (3*x*x*x*x+9*x*x*x-198*x*x+156*x+360) void binary_search ( int *ans){ int count = 1000 , i=0; double mid , lower=-15 , upper=20; while ((f(mid)) != 0 && i < count ) { mid = (lower + upper) / 2.0; printf("#%d\t[%f,%f]\t解=%f\n",i+1,lower,upper,mid); if (fabs(f(mid)) == 0) { break; } i++; if ( f(mid) * f(lower) < 0) { upper = mid; } else { lower = mid; } }*ans = mid; } void Exhaustive(int a, int b, int *ans, int *count) { *count = 0; int i; for (i = a; i <= b; i++) { if (f(i) == 0) { ans[*count] = i; (*count)++; } } } int main() { int i , x , lower=-200 , upper=200 ; int ans[10]; int *count; Exhaustive(lower,upper,ans,&count); if (count > 0) { printf("*** 解多項式之整數根 ***\n"); printf("\n方程式p(x)= 3^4+9x^3-198x^2+156+360\n"); printf("\n解得整數根為"); for (i = 0; i < count; i++) { printf(" %d ", ans[i]); } } else { printf("在給定範圍內沒有找到整數解。\n"); } return 0; }