//求一个数的质因数 #include<stdio.h> void function(int n) { int sum = n; int i; for(i=2;i*i<=n;++i) { if(n%i == 0) { printf("%d ",i); while(n%i == 0) //排除掉已包含的这个质因数,比如20,第一个质因数是2,20/2=10,然后10/2=5 { n = n/i; } } } if(n>1...
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。 输入 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。 输出 对于每组数据,输出N的质因数的个数。 样例输入 120 200 样例输出 5 5 提示 注意1不是N的质因数;若N为质数,N是N的...
1 打开Dev-C++ 2 写好头函数#include<stdio.h> 3 写好主函数 4 if里进行判断是否有因数和判断因数是不是质因数,如果有质因数则输出int j,k;int flag;flag=0;scanf("%d",&k);for(j=2; j<k; j++) { if((!(k%j))&&(IsPrime(j))) { flag=1; printf("%d\t",j); }}if(flag...
把一个合数分解为若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数,分解质因数只针对合数 求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式的叫短除法,和除法的性质差不多,还可以用来求多个个数的公因式: 以24为例: 2 -- 24 2 -- 12 2 -- 6 3 (3是质数...
这个程序写得太过复杂了,完全可以简单一点的。具体的算法是从2开始尝试找出给你写的数所有的质因数,并统计每一个质因数出现的次数。分别保存在两个数组中。等到全部分解完成后,再检查其中出现次数最多的,进行输出就可以了。下面是我的程序和运行结果:include <stdio.h>int main(){ int i,j,k=...
我们要求质因数,那么就选择采用遍历的方法,从2开始除直到该数本身寻找他的因数前提:要确保输入的整数是合数,不然计算没有结果。1、第一步:因为数的因数可能重复比如9=3*3。所以我们需要每次都要从2开始遍历这是我们就需要用到递归算法。2、第二步:我们用while循环,循环条件是知道结果为1时停止。3...
在isPrime最后一行添加一个return isPrime;就可以了 int isPrime(int a){ int isPrime;int i;for(i=2;i=a){ isPrime=1;} return isPrime;}
i; //重新赋值 i = 2; //重新遍历 } } printf("%d=%d", y, a[0]); //输出原数、等号、第一个质因数 for(i = 1; i < j; i++) printf("×%d", a[i]); //如果存在第二个质因数,则继续输出 return 0;} ...
int have_factor=0; /* have_factor 表示num有没有质因数 */ int root;do { flag=0;root = sqrt(num); /* root 表示查找num的质因数的最大可能值 */ for(i=2;i<=root;i++){ if(num%i==0) /* 找到了num的一个质因数 */ { if(have_factor==0) { printf...