该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//Code
#include
#include
#include
#include
#pragma warning(disable:4996)
#pragma warning(disable:4244)
int main()
{
printf("Concise Prime - Complete Division - Generate\n");
unsigned int m_size, ctr_size, x, y, mid_limit, end_limit, pmax, pnumber, pctr;
unsigned int *pm;
unsigned int prime_bd, b16, m32, m128, m256, m512, g1, g2, g4;
time_t time_start, time_stop;
FILE *fid_data;
printf("Value...\n");
b16 = 0xFFFF;
m32 = 0x1FFFFFF;
m128 = 0x7FFFFFF;
m256 = 0xFFFFFFF;
m512 = 0x1FFFFFFF;
g1 = 0x3FFFFFFF;
g2 = 0x7FFFFFFF;
g4 = 0xFFFFFFFF;
prime_bd = g4;
mid_limit = sqrt(prime_bd) + 1;
m_size = prime_bd / 8 + 1;
pctr = 0;
printf("Allocate %u ...\n", m_size);
pm = (unsigned int *)malloc(m_size);
printf("Initialize...\n");
ctr_size = m_size / 4 - 1;
*pm = 0x3FFFFFFF;
for (x = 1; x <= ctr_size; x++) *(pm + x) = 0xFFFFFFFF;
printf("Compute...\n");
time(&time_start);
for (x = 0; x
{
if ((*(pm + x / 32) << x % 32) & 0x80000000)
{
if (x
{
end_limit = (prime_bd / x)*x;
*(pm + end_limit / 32) &= ~(0x80000000 >> end_limit % 32);
for (y = x + x; y> y % 32);
}
else break;
}
}
time(&time_stop);
printf("Write File...\n");
fid_data = fopen("PRIME.dat", "wb");
fwrite(pm, 4, m_size / 4, fid_data);
fclose(fid_data);
printf("Get MAX and AMOUNT...\n");
for (x = ctr_size; x>0; x--)
{
if (*(pm + x)>0)
{
for (y = 0; y<32; y++)
{
if ((*(pm + x) >> y) & 0x00000001) break;
}
break;
}
}
pmax = 32 * x + (31 - y);
pnumber = 0;
for (x = ctr_size; x>0; x--)
{
if (*(pm + x)>0)
{
for (y = 0; y<32; y++)
{
if ((*(pm + x) >> y) & 0x00000001) pnumber++;
}
}
}
for (y = 0; y<32; y++)
{
if ((*pm >> y) & 0x00000001) pnumber++;
}
printf("Max: %u\n", pmax);
printf("Amount: %u\n", pnumber);
printf("Time of Computation: %u s\n", (unsigned int)difftime(time_stop, time_start));
printf("Finished\n");
system("pause");
return 0;
}