分析素因数

スレッド: 素因数のいくつかの成果を分析

この記事を使用すると、素因数をリコールする必要があると素因数の数を分析する方法.

数字の間の乗算は、すべての数字がされた一緒にある素因数を統合 プライム. 例:
10 = 2 * 5. その中で 2 と 5 首相は、.
18 = 2 * 3 * 3. その中で 2 と 3 首相は、.

素因数を分析:
クラスレベルで 1 と 2 私は覚えていない何か, 私たちが学んできたし、. 傷害があるまで、私たちは、素数のためのニーズ分析の連続した除算を行います 1 その後、停止. 例の分析 140.

140 | 2
70   | 2
35   | 5
7     | 7
1

私たちは取ります 140 分割 2 (2 素数であります) もらいます 70. 見ます 70 まだで割った値 2 私たちは、分割されるように継続すべきです 35. 見ます 35 割り切れません 2 別の, 素数を追いました 3 割り切れるも割り切れません 5 我々は分割すべきです 5 もらいます 7. ここに行く 7 分割 7 もらいます 1. ある負傷者 1 私たちは停止する必要があります. そう 140 = 2 * 2 * 5 * 7

だから我々はどのようにリコールしています. 我々は彼らに分割素数を取得するが、繰り返すことができますように要約. まだ割り切れる数ながら、 2 彼らは別の分割が分割し、同じことを行うことです見つけるまで、それだけで割りません.

しかし、素数を知る方法を分割するために使用されます? 私たちは精神的に機敏なことができますこれらの例として、赤ちゃんと一緒に, しかし、難しいの大きな数で精神的に我々はあるとも任意の素数でも使用することができています, 例えば数 140 私たちは、番号なしに使用されます 3 しかし、いくつかの 3 素数であります. 単に私たちは私たちのブランドは、単語の数を参照し、チェックアウトするループを使用して割り切れるされた本の数を選択します 2 nに (nが分析される数であります). だから今、私たちは星を考える方向をコーディングしてみてください.

/**
*	Nhap vao 1 so tu nhien va phan tich ra thua so nguyen to
*/

#include <stdio.h>
#include <math.h>

int isPrime(int n) 
{
	int i;
	int m = (int) sqrt(n);
	for (i = 2; i <= m; i++) 
	{
		if(n % i == 0) 
			return 0;
	}
	return 1;
}

int main() 
{
	int n, i;
	printf("Enter number n = ");
	scanf("%d", &n);

	printf("%d = ", n);

	for (i = 2; i <= n; i++) 
	{
		while( isPrime(i) && (n % i == 0) ) 
		{
			printf("%d.", i);
			n = n / i;
		}
	}
	
	return 0;
}

上記のコードとして、あなたは私たちが正確に手順に従ってきご覧ください. なお、そこに 1 光素子の数を確認する機能.

しかしながら、上記のコードを大幅に短縮することができます. あなたは、あなたが読んで少し前に考えてみます.

私たちが分けたとき、あなたは気づいてい 140 与える 2 1は分裂することはできませんので、 2 もうそれは確かに割り切れません 4, 6, 8… なぜならもし割り切れる4,6,8… そして、確かにそれは割り切れます 2. チェックが持っていた。同様際bastardが割り切れることができます 3 それは6,9,12で割り切れることができません… そこから、我々はそれの後ろに数字を参照してくださいnはそれだけで割り切れる数字をチェックしていないことができますテスト数の倍数である場合に割り切れることはありません, その素数ではありませんチェック数. だから我々は数が素数であるかどうかをチェックする必要はありません. 私たちのコードではありません間違った結果は、以前よりもずっとコンパクトになります.

/**
*	Nhap vao 1 so tu nhien va phan tich ra thua so nguyen to
*/

#include <stdio.h>
#include <math.h>

int main() {
	int n, i;
	printf("Enter number n = ");
	scanf("%d", &n);

	printf("%d = ", n);

	for (i = 2; i <= n; i++) {
		while(n % i == 0) {
			printf("%d.", i);
			n /= i;
		}
	}

	return 0;
}

非常に単純ではありません! ^^. あなたがそれを行う場合、このアルゴリズムは、アルゴリズムに基づいて ふるい要素.