据你的要求来看,这个函数有一个整数的输入参数,输出一个数组用于存放相应的因子。
处理的流程是,从1到该整数范围内的所有整数与之相除,即可求得所有的因子!如果要求是质因子时还需要要对数组进行判断,除去非质数的因子即可。
public ArrayList getY(int s)
{
if (s <= 0)
throw new Exception("输入参数必须大于0");
ArrayList key = new ArrayList();
for (int i = 1; i <= s; i++)
if (s % i == 0)
keyAdd(i);
return key;
}
这是以C#为例写的函数,至于流程图,我想你看一下应该是非常简单的。就职是一个判断后进入循环,在循一半体内判断就可以了。你可以试着画一下,我相这么简单,你一定能画出来的!
当然有要求 别听那些人说什么连续就可以 对于那样的我只想说 他们根本就不懂 不懂还瞎说 连续还叫要求? 连续是硬性条件 没有连续你就别写积分符号 只要你写了这个东西 ∫
那么一定就是被积函数连续 再者说了没有连续你求什么积分?那不是废话吗?
言归正传,首先表格法是分步积分的特殊情况
也就是被积函数的乘积中有一个是幂函数
因为我们知道幂函数最后求导肯定为0
所以就把幂函数求导 而另外的一个函数微分
这样两个交叉加减 最后就是最终结果 也就是说这个必须得有一个幂函数在被积函数里面才能用
#include <stdioh>
void Factor(int n)
{
if(n == 0 || n == 1)
{
printf("%d = %d", n, n);
return;
}
int i = 2;
printf("%d =", n);
while(1)
{
if(n%i == 0)
{
n /= i;
if(n == 1)
{
printf(" %d", i);
break;
}
else
printf(" %d ", i);
}
else
++i;
}
}
int main()
{
for(int i = 0; i <= 72; ++i)
{
Factor(i);
printf("\n");
}
}
0 = 0
1 = 1
2 = 2
3 = 3
4 = 2 2
5 = 5
6 = 2 3
7 = 7
8 = 2 2 2
9 = 3 3
10 = 2 5
11 = 11
12 = 2 2 3
13 = 13
14 = 2 7
15 = 3 5
16 = 2 2 2 2
17 = 17
18 = 2 3 3
19 = 19
20 = 2 2 5
21 = 3 7
22 = 2 11
23 = 23
24 = 2 2 2 3
25 = 5 5
26 = 2 13
27 = 3 3 3
28 = 2 2 7
29 = 29
30 = 2 3 5
31 = 31
32 = 2 2 2 2 2
33 = 3 11
34 = 2 17
35 = 5 7
36 = 2 2 3 3
37 = 37
38 = 2 19
39 = 3 13
40 = 2 2 2 5
41 = 41
42 = 2 3 7
43 = 43
44 = 2 2 11
45 = 3 3 5
46 = 2 23
47 = 47
48 = 2 2 2 2 3
49 = 7 7
50 = 2 5 5
51 = 3 17
52 = 2 2 13
53 = 53
54 = 2 3 3 3
55 = 5 11
56 = 2 2 2 7
57 = 3 19
58 = 2 29
59 = 59
60 = 2 2 3 5
61 = 61
62 = 2 31
63 = 3 3 7
64 = 2 2 2 2 2 2
65 = 5 13
66 = 2 3 11
67 = 67
68 = 2 2 17
69 = 3 23
70 = 2 5 7
71 = 71
72 = 2 2 2 3 3
#include<stdioh>
void main()
{
int x,y,i=2,j=0,m;
printf("输入数字:");
scanf("%d",&x);
m=x;
int a[15]={0};
//设定一个范围足够的数组存放因子
while(i<=x)
{
if((x%i)==0) { x=x/i ;a[j]=i; j++; i=2;}
else i++;
//由于一个数的因子会小于或等于本身,所以可以
//以此设定跳出条件,用遍历的思想去从2开始逐个寻找因子
//如果那个数是因子之一则可以被整除if((x%i)==0)
//以此作为判断条件,而一个数的因子可能会重复
//所以每找到一个就要有重头开始再判断一边
//i=2;就是作为复位的,其实这个程序和算法很简单
//你自己多看两遍就明白了
//如果还有不懂得就直接上我的空间找我好了
}
printf("y=");
if(j==0) printf("%d\n",m);
//这是特殊情况质数
else
{
for(i=0;i<j-1;i++) if(a[i]!=0) printf("%d",a[i]);
printf("%d\n",a[i]);
}
}
#include
"stdioh"
int
main()
{
int
x,i;
scanf("%d",&x);//输入一个整数
for(i=1;i<=x;++i)
{
if(x%i==0)
printf("%d\n",i);//输出因子
}
return
0;
}
这样就OK了~~不明白的话就问我
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)