コード例 #1
0
ファイル: prime_number.c プロジェクト: smooguy/Cstudy
int main(void)
{
	int num;
	int i, j;
	int enter = 0;

	// 먼저 소수의 정의를 알자. 1과 자기자신만 약수로 가진 양수. 1은 소수도 합성수도 아니다. 2는 소수중 유일한 짝수다. 
	// 에라토스테네스의 체를 이용한 알고리즘.
	// 2를 남기고 2의 배수들을 지워나간다. 3을 남기고 3의 배수들을 지워나간다. 
	// 이런식으로 계속 하다가 남은 수만 추려내면 소수가 된다. 
	printf("정수하나를 입력하면 거기까지의 소수를 출력해줄 것입니다: ");
	while(scanf("%d", &num) == 1)
	{
		GetPrimeNumber(num); 	//입력을 받은 수만큼 배열안에 수들을 차례대로 저장.

		for(i = 2; i <= num; i++)
		{
			if(p_prime[i] == 0)  	//0인 수는 넘어감 
				continue;
			for(j = i + i; j <= num; j += i) 	//어떤 식으로 0을 집어넣는지 추적해보자.
				p_prime[j] = 0;
		}

		//출력 부분
		for(i = 2; i < num; i++)
		{
			if(p_prime[i] != 0)
			{
				printf("%d\t", p_prime[i]);
				// 10칸식 나누어서 출력
				enter++;
				if(enter % 10 == 0)
					putchar('\n');
			}
		}
		putchar('\n');
		printf("더 입력하실래요? (나가기는 q): ");
	}

	free(p_prime);

	return 0;
}
コード例 #2
0
ファイル: xpack-base.cpp プロジェクト: Luweimy/xpack
uint32_t xpack::HashString(const std::string &s, uint8_t seed) {
    return torch::Hash::XXHash32(s.c_str(), s.length(), GetPrimeNumber(seed));
}
コード例 #3
0
ファイル: fft_mult.cpp プロジェクト: vernamlab/DHS-LTV
void mymult(){
	ZZX mya, myb, c0, c1, x;
	ZZ q;
	int k = to_long(euler_toient(to_ZZ(Modulus_M)));

	GenPrime(q, Max_Prime);
	RandomPolyGen(mya, k, 1, q);
	RandomPolyGen(myb, k, Max_Prime, q);

	long da = deg(mya);
	long db = deg(myb);
	long bound = 2 + NumBits(min(da, db)+1) + MaxBits(mya) + MaxBits(myb);


	ZZ prod;
	set(prod);
	int prime_num = GetPrimeNumber(bound, prod);
	cout << prime_num << endl;


	long mk = NextPowerOfTwo(2*da+1);

	zz_p::FFTInit(0);
	long p = zz_p::modulus();

	fftRep R1[prime_num];
	fftRep R2[prime_num];
	fftRep R3[prime_num];
	fftRep R4[prime_num];

	int size = 256;
	fftRep Rm[prime_num][size];

	for(int i=0; i<prime_num; i++)
		for(int j=0; j<size; j++)
			Rm[i][j].SetSize(mk);

	for(int i=0; i<prime_num; i++){
		zz_p::FFTInit(i);
		R1[i].SetSize(mk);
		R2[i].SetSize(mk);
		R3[i].SetSize(mk);
		R4[i].SetSize(mk);
	}

	myTimer tm;
	tm.Start();
	CalculateFFTValues(R1, mya, prime_num, db);
	tm.Stop();
	tm.ShowTime("My FFT:\t");

	CalculateFFTValues(R2, myb, prime_num, db);

	tm.Start();


	for(int i=0; i<prime_num; i++)
		for(int j=0; j<size; j++)
			Rm[i][j] = R2[i];

	for(int j=0; j<size; j++){
		CalculateFFTValues(R1, mya, prime_num, db);
		for(int i=0; i<prime_num; i++){
			zz_p::FFTInit(i);
			mul(R3[i], R1[i], Rm[i][j]);
			add(R4[i], R4[i], R3[i]);
		}
	}
	CalculateFFTValues(R4, myb, prime_num, db);

	tm.Stop();
	tm.ShowTime("My FFT:\t");
}