CSDN-阶乘与整数
来源:互联网 发布:人工智能客服开源系统 编辑:程序博客网 时间:2024/05/16 08:42
题目详情
对于整数n,n的阶乘表示为n!定义如下
0! = 1
n! = n * (n - 1)!
给定n和m,问n!是否是m的倍数?
n和m全在32位整数范围内,m非0。
返回1和0表示整除和不整除。
答题说明
main函数可不用完成。
题目分析:
1、判断n和m的大小。如果m<=n 直接可以整除;m>n 如果m是素数,不可以整除。否则根据下面判断
2、把从2到n的数存入a数组中
3、对m分解质因数,然后把因子依次存入b数组中
4、对a数组从头开始,对b数组依次求余。模为0则把相对应b数组中的数赋为0,a数组中的数进行整除。(具体实现看代码吧!)
5、检测b数组中的值是否全是0,若是,可以整除。 不是,则不可以整除。
排除特例情况,其实就是一种分式约分,如果m可以被完全约分,肯定是可整除
1、判断n和m的大小。如果m<=n 直接可以整除;m>n 如果m是素数,不可以整除。否则根据下面判断
2、把从2到n的数存入a数组中
3、对m分解质因数,然后把因子依次存入b数组中
4、对a数组从头开始,对b数组依次求余。模为0则把相对应b数组中的数赋为0,a数组中的数进行整除。(具体实现看代码吧!)
5、检测b数组中的值是否全是0,若是,可以整除。 不是,则不可以整除。
排除特例情况,其实就是一种分式约分,如果m可以被完全约分,肯定是可整除
#include<stdio.h>#include<math.h>#include<stdlib.h>int comp(int m){ int i; if(m<2 || m%2==0) return 0; for(i=3; i<=sqrt(m); i+=2) if(m%i==0) return 0; return 1;}int divides (int n,int m){ int *pn=NULL, *pm=NULL; int root=sqrt(m); int i,j,x,k=0; if(n>=m) return 1;//代表可以整除 if(comp(m)) return 0; pn=(int*)malloc(n*sizeof(int)); pm=(int*)malloc(root*sizeof(int)); x=m; for(i=2; i<=n; i++) pn[i-1]=i; for(i=2; i<=x;)//分解质因数,方法好 { if(x%i==0) { pm[k]=i; x/=i; k++; } else { i++; } } for(j=0; j<k; j++) { for(i=1; i<n; i++) { if(pn[i]%pm[j]==0) { pn[i]/=pm[j]; pm[j]=0; break; } } } for(j=0; j<k; j++) { if(pm[j]) { free(pn); free(pm); return 0; } } free(pn); free(pm); return 1;}//start 提示:自动阅卷起始唯一标识,请勿删除或增加。int main(){ printf("%d",divides(6,9));}//end //提示:自动阅卷结束唯一标识,请勿删除或增加。
0 0
- CSDN-阶乘与整数
- 大整数的乘法与阶乘运算
- CSDN 编程挑战 阶乘与整除
- 求阶乘与多整数连乘问题
- Python+tensorflow计算整数阶乘的方法与局限性
- 大整数阶乘计算
- 大整数的阶乘
- 大整数阶乘
- 大整数的阶乘
- 大整数阶乘
- 整数的阶乘
- 1000之内整数的阶乘
- 求大整数的阶乘
- 求整数n的阶乘
- 求得任意整数的阶乘
- 求得任意整数的阶乘
- 大整数乘法 求阶乘
- 求大整数的阶乘
- IOS开发,块代码使用
- 手机格式化照片丢失还能恢复吗?
- curl libcurl
- 浅析大数据量高并发的数据库优化
- WPF listView未找到数据源
- CSDN-阶乘与整数
- 咱们一起来讨论一下分纸压线机
- LeetCode :: Reverse Integer
- PHP回调函数的实现方法 处理事件
- 数的读法
- iOS之代理delegate使用
- ubuntu ftp服务器
- Spark 安装
- 链表的分解