#include <stdio.h>
int eulerFunc(int n, int* num_out) {
int i, j, cnt = 0
num_out[cnt++] = 1
for (i = 2 i <= n ++i) {
for (j = 2 j <= i ++j) {
if (i % j == 0 && n % j == 0) {
break
}
}
if (j > i) {
num_out[cnt++] = i
}
}
return cnt
}
int main(void) {
int n, num[10], y, i
scanf("%d", &n)
y = eulerFunc(n, num)
for (i = 0 i < y ++i) {
printf("%d ", num[i])
}
printf("\n%d", y)
return 0
}
欧拉法求解y'=-2y-4x, x0=0, y0=2, x<=1的求解如下:
#include<stdio.h>
/*solve ode: dy/dx = -2*y -4*x*/
float fun(float x,float y){
float f
f=-2.0*y -4.0*x
return f
}
int main(){
float x0=0,y0=2.0,x,y,h=0.1,t=1.0,k
/* printf("\nEnter x0,y0,h,xn: ") scanf("%f%f%f%f",&x0,&y0,&h,&t)*/
x=x0
y=y0
printf("\n x\t y\n")
while(x<=t){
k=h*fun(x,y)
y=y+k
x=x+h
printf("%0.3f\t%0.3f\n",x,y)
}return 0
}
运行结果
代码截图+运行结果
(晚点我再来看后面的几小问)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)