❶ c語言程序設計:分解素因子
#include <iostream>
using namespace std;
int main()
{
int *a,n;
cout<<"輸入:";
cin>>n;
a=new int[n];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
{
for(int j=2,k=0,x=a[i];j<=a[i];j++)
{
for(;x>0;k++)
{
if(x%j==0)
{
if(k!=0) cout<<'*';
cout<<j;
x/=j;
}
else break;
}
}
cout<<endl;
}
delete []a;
return 0;
}
❷ C語言:編寫一個函數,求輸入整數(≤10000)的素因數分解並統計所有素因子出現的次數。
#include<stdio.h>
voidfun(intn)
{
inti=2,num=0;
printf("%d=",n);
while(n>1)
{
if(n%i==0)
{
printf("%dx",i);
num++;n/=i;
}
elsei++;
}
printf(" %d",num);
}
voidmain()
{
intn;
scanf("%d",&n);
fun(n);
}
//運行示例:
❸ c語言編一個質因數分解的程序 代碼如下,顯示的是幾個數,但我只想要較大的那個因數顯示出來怎麼改
#include "stdio.h"
#include "conio.h"
main()
{
int n,i,t;
t = 0;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{
if(i > t) t = i;
//printf("%d*",i);
n=n/i;
}
else break;
}
}
printf("%d",t)
printf("%d",n);
getch();
}
❹ 求助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 main(){
int n,i;
scanf("%d",&n);
for(i=2;i<=n;i++){//將2000換成n,也就是被除數,除數比被除數大,除來也就沒有意義了
if(n%i==0){
printf("%-2d",i);
n=n/i;
i=1;//將2改為1後。i在完成一次for語句後才會進行i++,如果你設置為2的話,再加就會變成3,這就是你之前錯誤的原因
}
if(n==1) break;
}
}
}
}
以上就是我的回答,具體錯誤都在代碼中備注出來了,如果我的回答對你有用的話,務必採納一下!抱拳!謝了!
❻ 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>
#include<math.h>
int main() {
long long n,i,j,k;
while(~scanf("%ld",&n)) {
k=1;
for(i=2; i<=sqrt(n); i++) {
j=0;
if(n%i==0) {
if(k)k=0;
else printf("*");
printf("%ld",i);
while(n%i==0) {
j++;
n/=i;
}
if(j>1)printf("^%ld",j);
}
}
if(n>1)
if(k)printf("%ld",n);
else printf("*%ld",n);
printf("\n");
}
return 0;
}
❽ 用C語言怎樣做出分解質因數啊,請高手們幫個忙吧。
#
include
"stdio.h"
int
isPrime(int
a)
{
/*判斷a是否是
質數
,是質數返回1,不是質數返回0*/
int
i;
for(i=2;i<=a-1;i++)
if(a
%
i
==
0)
return
0;
/*不是質數*/
return
1;
/*是質數*/
}
void
PrimeFactor(int
n)
{
/*對參數n分解
質因數
*/
int
i;
if(isPrime(n))
printf("%d
",n);
else
{
for(i=2;i<=n-1;i++)
if(n
%
i
==
0)
{
printf("%d
",i);
/*第一個因數一定是質因數*/
if(isPrime(n/i))
{
/*判斷第二個因數是否是質數*/
printf("%d
",n/i);
break;
/*找到全部
質因子
*/
}
else
PrimeFactor(n/i);
/*遞歸地調用PrimeFactor
分解n/i
*/
break;
}
}
}
main()
{
int
n;
printf("Please
input
a
integer
for
getting
Prime
factor\n")
;
scanf("%d",&n);
PrimeFactor(n);
/*對n
分解質因數
*/
getche();
}
❾ C語言分解質因數
這樣注釋的已經很好了啊
if(m%k!=0),說明還沒找到因數,每次都是從2開始,逐漸遞增,來找因數的
else,else部分,說明已經找到了因數,找到因數以後,先把因數列印出來,然後讓m等於被除後的數,讓k=2,也就是從2開始,繼續遞增找其他的因數啊
舉個例子,你就明白了,比如15,你要對它進行分解質因數,該怎麼做呢
先讓k=2,發現15%2!=0了,說明2不是它的因數,讓k++
k=3的時候,發現15%3==0了,說明3是它的一個因數,列印出3,讓m=15/3=5,讓k=2
5%2!=0,5%3!=0,5%4!=0,說明2,3,4,都不是5的因數,k繼續自加
k=5,5%5==0了,說明5是5的因數,所以,列印5,m=5/5=1,k=2,這時,就會退出for循環了
逐行分析,見下面:
if(m%k!=0) //m不能被k整除,說明k不是m的因數
{
k++; //就讓k自加1,判斷下一個數是不是m的因數
}
else //m不能被k整除,說明k是m的一個因數
{
printf("%d*",k); //把這個因數k,列印出去
m=m/k; //從m中把因數k去掉,如果不去掉,下一個又會找到因數k的,那樣就不對了
k=2;//讓k重新等於2,也就是重新從2開始找m的因數
}
❿ C語言:編寫一個函數,求輸入整數的素因數分解並統計每一個素因子出現的次數。
#include<stdio.h>
voidfun(intn)
{
inti=2,j,a[10000];
for(j=2;j<=n;j++)
a[j]=0;
printf("%d=",n);
while(n>1)
{
if(n%i==0)
{
printf("%dx",i);
a[i]++;n/=i;
}
elsei++;
}
printf(" 其中: ");
for(j=2;j<=i;j++)
if(a[j])
printf("%d出現%d次 ",j,a[j]);
}
voidmain()
{
intn;
scanf("%d",&n);
fun(n);
}
//運行示例: