Add program and README
parent
4b91830a0e
commit
1c4b0813fc
@ -0,0 +1,3 @@
|
|||||||
|
cmake-build-debug
|
||||||
|
primes.txt
|
||||||
|
main
|
@ -0,0 +1,2 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/workspace.xml
|
@ -0,0 +1 @@
|
|||||||
|
c___primes
|
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module classpath="CMake" type="CPP_MODULE" version="4" />
|
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DiscordProjectSettings">
|
||||||
|
<option name="show" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectNotificationSettings">
|
||||||
|
<option name="askShowProject" value="false" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
||||||
|
<component name="JavaScriptSettings">
|
||||||
|
<option name="languageLevel" value="ES6" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/c++-primes.iml" filepath="$PROJECT_DIR$/.idea/c++-primes.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -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>
|
@ -0,0 +1,6 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.15)
|
||||||
|
project(c___primes)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
|
||||||
|
add_executable(c___primes main.cpp)
|
@ -1 +1,11 @@
|
|||||||
c++-primes
|
# Primes in c++
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# build
|
||||||
|
g++ -lpthread -o main main.cpp
|
||||||
|
|
||||||
|
# run
|
||||||
|
./main
|
||||||
|
```
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <tuple>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using std::cout;
|
||||||
|
|
||||||
|
uint numThreads;
|
||||||
|
|
||||||
|
void *GetPrimes(void* start) {
|
||||||
|
ulong num = (ulong) start;
|
||||||
|
ulong incr = numThreads * 2;
|
||||||
|
while (true) {
|
||||||
|
bool isPrime = true;
|
||||||
|
if (num < 3 || num % 2 == 0) {
|
||||||
|
num += incr;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (int i = 3; i < num/2; i += 2) {
|
||||||
|
if (num % i == 0) {
|
||||||
|
isPrime = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isPrime) {
|
||||||
|
cout << num << "\n";
|
||||||
|
}
|
||||||
|
num += incr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
numThreads = thread::hardware_concurrency();
|
||||||
|
pthread_t threads[numThreads];
|
||||||
|
long start = 1;
|
||||||
|
int rc;
|
||||||
|
for (int i = 0; i < numThreads; i++) {
|
||||||
|
rc = pthread_create(&threads[i], NULL, GetPrimes, (void *)(start + (2*i)));
|
||||||
|
if (rc) {
|
||||||
|
cout << "Error";
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pthread_exit(NULL);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue