C言語整数の素数因子分解
10948 ワード
整数の素数因子分解ある正の整数Nを与え、その素数因子分解結果入力フォーマットを求める:long int範囲内の正の整数Nを入力する.出力フォーマット:所与のフォーマットでNを出力する因数分解式、すなわち
ここでpiは素因子であり、小から大への出力が要求され、指数kiはpiの個数である.kiが1である係数piが1つしかない場合kiは出力されない.
サンプルを入力:
出力サンプル:
C言語の完全なコードは以下の通りです.
N=p1^k1*p2^k2*…*pm^km
ここでpiは素因子であり、小から大への出力が要求され、指数kiはpiの個数である.kiが1である係数piが1つしかない場合kiは出力されない.
サンプルを入力:
2350
出力サンプル:
2350=2*5^2*47
C言語の完全なコードは以下の通りです.
#include
#include
int main() {
long int m;
while(scanf("%ld",&m)!=EOF) {
int a[1000];
int b[100];
long int i;
int j,n;
if(m==1) {
printf("1=1
");
} else {
printf("%ld=",m);
int k=0;
for(i=2; i<=m; i++) {
n=sqrt(i);
// i
while(m%i==0) {
for(j=2; j<n; j++) {
if(i%j==0) {
break;
}
}
if(j>=n) {
// i ,
a[k]=i;
k++;
}
m=m/i;
}
}
int x;
for(i=0; i<k; i++) {
x=0;
//
for(j=i; j<k; j++) {
if(a[i]==a[j])
x++;
}
//
i=i+x-1;
// ,
if(i!=k-1) {
if(x==1) {
printf("%d*",a[i]);
} else {
printf("%d^%d*",a[i],x);
}
//
} else {
if(x==1)
printf("%d
",a[i]);
else
printf("%d^%d
",a[i],x);
}
}
}
}
return 0;
}