mirror of
https://github.com/tursom/prime_numbers_c.git
synced 2025-02-19 20:50:30 +08:00
计算质数
This commit is contained in:
commit
0484b05b68
29
.idea/codeStyles/Project.xml
Normal file
29
.idea/codeStyles/Project.xml
Normal file
@ -0,0 +1,29 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<Objective-C-extensions>
|
||||
<file>
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
|
||||
</file>
|
||||
<class>
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
|
||||
</class>
|
||||
<extensions>
|
||||
<pair source="cpp" header="h" fileNamingConvention="NONE" />
|
||||
<pair source="c" header="h" fileNamingConvention="NONE" />
|
||||
</extensions>
|
||||
</Objective-C-extensions>
|
||||
</code_scheme>
|
||||
</component>
|
4
.idea/misc.xml
Normal file
4
.idea/misc.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
||||
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/prime_numbers_c.iml" filepath="$PROJECT_DIR$/.idea/prime_numbers_c.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
2
.idea/prime_numbers_c.iml
Normal file
2
.idea/prime_numbers_c.iml
Normal file
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module classpath="CMake" type="CPP_MODULE" version="4" />
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
7
CMakeLists.txt
Normal file
7
CMakeLists.txt
Normal file
@ -0,0 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.9)
|
||||
project(prime_numbers_c C)
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
|
||||
add_executable(prime_numbers_c main.c)
|
||||
target_link_libraries(prime_numbers_c m)
|
57
main.c
Normal file
57
main.c
Normal file
@ -0,0 +1,57 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
unsigned int getPrimeNumbers(unsigned int maxnum, unsigned int *buff, unsigned int buffsize) {
|
||||
unsigned int sqmax = (unsigned int) sqrt(maxnum);
|
||||
unsigned int numbers = 1;
|
||||
buff[0] = 2;
|
||||
int flag = 1;
|
||||
for (unsigned int i = 3; i <= maxnum; i += 2) {
|
||||
unsigned int sqi = (unsigned int) sqrt(i);
|
||||
for (unsigned int n = 0; buff[n] <= sqi; n++)
|
||||
if (i % buff[n] == 0)
|
||||
flag = 0;
|
||||
#ifdef _DEBUG_
|
||||
if (!(i % 10000000))
|
||||
printf("%u\n", i);
|
||||
#endif
|
||||
if (flag) {
|
||||
buff[numbers] = i;
|
||||
numbers++;
|
||||
if (numbers == buffsize)
|
||||
break;
|
||||
}
|
||||
flag = 1;
|
||||
}
|
||||
return numbers;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc <= 1)
|
||||
return 1;
|
||||
|
||||
unsigned int maxnum = 0;
|
||||
if (argc > 1) {
|
||||
if (atol(argv[1]) < 2)
|
||||
return 2;
|
||||
maxnum = (unsigned int) atol(argv[1]);
|
||||
}
|
||||
|
||||
int output = 1;
|
||||
if (argc > 2) {
|
||||
output = atoi(argv[2]);
|
||||
}
|
||||
|
||||
unsigned int buffsize = (unsigned int) (maxnum / log(maxnum) * (maxnum > 200000 ? 1.1 : 1.3));
|
||||
#ifdef _DEBUG_
|
||||
printf("buff size:%u\n", buffsize);
|
||||
#endif
|
||||
unsigned int *buff = malloc(sizeof(unsigned int) * buffsize);
|
||||
unsigned int numbers = getPrimeNumbers(maxnum, buff, buffsize);
|
||||
if (output)
|
||||
for (int i = 0; i < numbers; i++)
|
||||
printf("%u\n", buff[i]);
|
||||
printf("%u numbers\n", numbers);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user