C言語整数の素数因子分解

10948 ワード

整数の素数因子分解ある正の整数Nを与え、その素数因子分解結果入力フォーマットを求める:long int範囲内の正の整数Nを入力する.出力フォーマット:所与のフォーマットでNを出力する因数分解式、すなわち
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; }