當前位置:首頁 » 編程語言 » 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,且是素數。輸出即可