當前位置:首頁 » 編程語言 » c語言求質因數

c語言求質因數

發布時間: 2023-02-19 12:34:38

c語言演算法之分解質因數

求出區間[a,b]中所有整數的質因數分解。

輸入

輸入兩個整數a,b。

輸出

每行輸出一個數的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是從小到大的)(具體可看樣例)。

樣例輸入

3 10

樣例輸出

3=3

4=2*2

5=5

6=2*3

7=7

8=2*2*2

9=3*3

10=2*5

藍橋杯

#include<stdio.h>

#include<math.h>

int factor(int n)

{

        int i,j=(int)sqrt(n);

        if(n%2==0) return 2;

        for(i=3;i<=j;i++)

        if(n%i==0) return i;

        return n;

}

int main()

{

        int i, j, k, m, n;

        scanf("%d%d", &m, &n);

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

        {

        j=factor(i);

        k=i/j;

        printf("%d=%d",i,j);

                while(k>1)

                {

                j=factor(k);

                k=k/j;

                printf("*%d", j);

                }

        printf("\n");

        }

    return 0;

}

分解質因數牛逼方法

❷ 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語言 求質因子

#include <stdio.h>
main()
{
int issushu(int);

int m,i;
printf("Please input a number(>0): ");
scanf("%d",&m);
printf("\nThe all Prime factors are: \n");

for(i=1;i<m;i++)
if(0==m%i)
if(issushu(i))
printf("%d ",i);
return 0;

}

int issushu(int n)
{
int i;
if(n<2) return 0;
if(n==2) return 1;
if(n>2 && n%2==0) return 0;
for(i=3;i*i<=n;i+=2)
if(n%i==0) return 0;
return 1;
}

❹ 求助c語言編程題目質因數分解

因為使用for循環從小到大判斷其因數,而質數在由其組成的合數前面,所以如果i是n的因數,那麼i一定是質因數,而且質因數會從小到大輸出.

具體編程時,我們還應該使用n=n/i;,使for循環能快速滿足終止條件,節省運行時間.用i--;,處理有多個重復質因數的情況.用count來統計相同質因數的個數.

具體的解釋見注釋

#include<stdio.h>

int main(){

//n輸入的要分解的數,m前一個質因數,i循環變數

//flag第一個輸出的質因數的標志變數,count統計有幾個相同的質因數

int n,m,i,flag,count;

while(scanf("%d",&n)==1){//輸入一個數n,直到一次輸入的參數個數不等於1

flag=1;//第一次輸出的質因數的標志為1

m=0;//前一個質因數賦初值為0

count=1;//相同質因數個數為1

for(i=2;i<=n;i++){ //for循環從2到n

if(n%i==0){//如果n能被i整除,則i為質因數

if(m==i){//如果質因數與前一個質因數相同

count++;//相同質因數個數加一

}else{//如果質因數與前一個質因數不同

if(flag==1){//如果是第一次輸出

printf("%d",i);//輸出第一個質因數

flag=0;//把標志變數置0,後面輸出的質因數都不是第一個了

}else{//不是第一次輸出

if(count==1){//有一個不相同的質因數輸出

printf("*%d",i);//輸出不相同的質因數

}else{//有多個相同的質因數輸出

printf("^%d",count);//輸出相同的質因數個數

count=1;//重置相同質因數個數為1

printf("*%d",i);//輸出新的不同的質因數

}

}

}

m=i;//把當前質因數賦給存儲前一個質因數的變數m

n=n/i;//改變循環范圍n為n/i後的值

i--;//i減一,以處理有多個相同質因數的情況

}

}

if(count>1) printf("^%d",count);//如果有多個相同質因數,輸出其個數

printf(" ");//換行

}

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語言,數組中的質因數

按照題目要求編寫的數組中的質因數的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;

}

熱點內容
linux伺服器存儲 發布:2024-11-08 09:51:40 瀏覽:472
更新時間伺服器ip移動 發布:2024-11-08 09:39:13 瀏覽:218
存儲與網路的關系 發布:2024-11-08 09:37:42 瀏覽:559
php設置文件大小 發布:2024-11-08 09:36:37 瀏覽:515
ftp文件注釋 發布:2024-11-08 09:20:06 瀏覽:170
大疆上傳視頻 發布:2024-11-08 09:19:58 瀏覽:638
cwebservice文件上傳 發布:2024-11-08 09:09:18 瀏覽:584
王牌戰爭有沒有什麼和平的伺服器 發布:2024-11-08 09:01:36 瀏覽:375
centos7刪除文件夾 發布:2024-11-08 09:00:58 瀏覽:990
伺服器可以分成多個獨立的電腦嗎 發布:2024-11-08 08:56:15 瀏覽:203