编写一个函数,求一个给定数字的所有因子,并画出流程图

编写一个函数,求一个给定数字的所有因子,并画出流程图,第1张

据你的要求来看,这个函数有一个整数的输入参数,输出一个数组用于存放相应的因子

处理的流程是,从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了~~不明白的话就问我

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11670014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存