当前位置:首页 » 编程语言 » c语言求质因子
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求质因子

发布时间: 2023-03-16 05:28:13

c语言编程:求一个数的质因子

#include<stdio.h>
intmain()
{
inti,j,a[999999],x,y;
scanf("%d",&x);//读取
y=x;
for(i=2,j=0;i<=x;i++)//遍历质因数
{
if(x%i==0)//如果读取的数能够被质因数整除
{
a[j]=i;//将符合条件的质因数存到数组中
j++;//数组下标递增
x/=i;//重新赋值
i=2;//重新遍历
}
}
printf("%d=%d",y,a[0]);//输出原数、等号、第一个质因数
for(i=1;i<j;i++)
printf("×%d",a[i]);//如果存在第二个质因数,则继续输出
return0;
}

㈡ C语言,数组中的质因数

按照题目要求编写的数组中的质因数的C语言程序如下

#include<stdio.h>

voidf(){

intn,a[100],count=0,k;

scanf("%d",&n);

for(k=2;k<n;k++)

{

袜汪if(n%k==0)

{

a[count]=k;

count++;

告哪仔n=n/k;

k--;

}

}

缓拿a[count]=n;

for(k=0;k<=count;k++)

{

printf("%d ",a[k]);

}

}

intmain(){

f();

return0;

}

㈢ c语言,最小质因数

方法如下:戚脊镇
首先,用筛选法找出质素,然野腔后,遍历这个素以高粗内的所有素数,找到最小质因数
#include <stdio.h>
#define MAX 1001
char a[MAX];
int main()
{
int i,j;
for(i = 2; i < MAX; i++)
{
if(a[i] == 0)
for(j = i+i; j < MAX; j += i)
a[j] = 1;
}
int n;
printf("Please enter a number:\n");
scanf("%d",&n);
for(i = 2; i <= n/2; i++)
{
if(a[i] == 0)
{
if(n % i == 0)
printf("%d ",i);
}
}
printf("\n");
}

㈣ C语言编写:求2-100中,每个数的质因子

#include <stdio.h>
#include <math.h>

void fun(int num) /* 该函数输出num的因数分解表达式 */
{
int flag = 0 ; /* flag 表示找到了num的一个质答桥因数 */
int i;
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("\n%d = %d * ",num,i); }
else { printf("%d * ",i); }
num/=i;
flag=1;
have_factor=1;
break;
}
}
}while(flag==1); /* 如果num还能继续分解,则继续循环宽蚂,否则清巧猛退出循环 */

if(have_factor==1) { printf("%d",num); }
else { printf("\n\n%d is a prime number!\n",num);}

return;
}

main()
{
int k;
for(k=2;k<=100;k++)
{
fun(k);
}

getch();
}

㈤ 急求,用C语言编程,循环语句:输入一个数,求出它的所有质数因子

#include<stdio.h>
voidmain()
{
inti=2,n;
printf("请输入需要分解的正整数: ");
scanf("%d",&n);
printf("分解质因数的结果为: %d=",n);
while(n>=2)
{
if(n%i==0){printf("%d*",i);n/=i;}
elsei++;
}
printf("");
}


运行示例截图:

㈥ C语言求合数的质因数分解,并输出出现最多的质因数

这个程序写得太过复杂了,完全可以简单一点的。具体的算法是从2开始尝试找出给你写的数所有的质因数,并统计每一个质因数出现的次数。分别保存在两个数组中。

等到全部分解完成后,再检查其中出现次数最多的,进行输出就可以了。

下面是我的程序和运行结果:

#include <stdio.h>
int main()
{ int i,j,k=0,n,a[50],b[50]= {0};
scanf("%d",&n);
for(i=2; i*i<=n; i++)
{ for(j=1; n%i==0; n/=i)
{ if(j)
{ a[k]=i;
b[k]=1;
j=0;
}
else b[k]++;
}
if(!j)k++;
}
if(n>1)
{ a[k]=n;
b[k++]=1;
}
for(i=1,j=0; i<k; i++)
if(b[i]>=b[j])j=i;
printf("%d ",a[j]);
return 0;
}

㈦ C语言:求一个整数的质因子(要求在图片上),咋写

代码文本:

#include "stdio.h"

int IsPrime(int n){//素数判断

int i;

if(n>2 && !(n&1) || n<2)

return 0;

for(i=3;i*i<=n;i+=2)

if(!(n%i))

return 0;

return 1;

}


int main(int argc,char *argv[]){

int n,i;

printf("Enter n(int n>1 and not a prime)... n=");

if(scanf("%d",&n) && n>1 && !IsPrime(n)){

putchar(' ');

for(i=2;i<=n;i++)

if(IsPrime(i) && n%i==0){

printf(i!=n ? "%d " : "%d ",i);

n/=i;

i=1;

}

}

else

printf("Input error, exit... ");

return 0;

}

㈧ c语言求质因子(质数且是输入数的因子)最多的那个数

要找到满足题意的数,

就是小于等于n的最大的2的幂,


证明:

假设这个数m是2^k,并且2^k小于等于n。

那么它有k个质因子(都是2),

反证法:

假如某个数x有k+1个因子,

质数里丛码面最小的是2,那么该数x一定满足:

m<2^(k+1)<=x<=n

因为m是小于等于n的最大的2的幂,因此x不存在。


所以m就是小于等于n的最大的2的幂胡郑肢。

(注意这里说的是最多有k个因子,最小的是裤世2^k,k个因子还可能是2^(k-1)*3,也是有可能的,但是就是不可能有k+1个因子)


代码:

#include<stdio.h>
unsignedflp2(unsignedx)
{
x=x|(x>>1);
x=x|(x>>2);
x=x|(x>>4);
x=x|(x>>8);
x=x|(x>>16);
returnx-(x>>1);
}
intmain()
{
printf("%u",flp2(1000000000));
return0;
}

㈨ C语言求质因数 请帮忙改正

在isPrime最后唯激一枝拦行指搭袜添加一个return isPrime;就可以了 int isPrime(int a){ int isPrime;int i;for(i=2;i=a){ isPrime=1;} return isPrime;}

㈩ C语言,求一个整数的所有质因子。。谢谢大神,我是C语言小白。。

测试结果:

请输入一个数N,N的所有质数因子:
520
2 5 13

源代码:
#include "stdio.h"
#include "conio.h"
int isShuShu(int n)
{
int i;
for(i=2;i<=n/2;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
main()
{
int i;
int n=0;
printf("请输入一个数N,N的所有质数因子:\n");
scanf("%d",&n);
for(i=2;i<=n/2;i++)
{
if(n%i==0&&isShuShu(i))
{
printf("%3d ",i);
}
}
getch();
}

思路:
一个函数isShuSHU()用来判断给定 的数是否是素数
从1到n的一般,一个一个排查,看那些数能整除N,且是素数。输出即可