我得到了后面的任务。在一个单独的线程中查找素数
编写一个输出素数的多线程Java,Pthreads或Win32程序。这个 程序应该如下工作:
- 用户将运行该程序,并将在命令行上输入一个数字。
- 程序将创建一个单独的线程,输出小于或等于用户输入的数字的所有素数 。
#include <windows.h>
#include <iostream>
#define MAX_THREADS 1
using namespace std;
DWORD WINAPI Prime (LPVOID);
HANDLE hThreads [MAX_THREADS];
DWORD id [MAX_THREADS];
DWORD waiter;
DWORD WINAPI Prime(LPVOID Param)
{
DWORD Number = *(DWORD*)Param;
for (DWORD i=0;i<=Number;i++)
{
if((Number%2==0) ||(Number%3==0) || (Number%4==0)||(Number%5==0)||(Number%6==0)|| (Number%7==0)||(Number%8==0)||(Number%9==0))
cout <<"";
else
cout<<i;
}
return 0;
}
int main(int argc, char* argv[ ])
{
DWORD ThreadId;
HANDLE ThreadHandle;
int Param;
cout<<"Enter a number:";
cin>>Param;
cout<<"Prime numbers less than and equal to your number";
ThreadHandle=CreateThread(NULL,0,Prime,&Param,0,&ThreadId);
waiter=WaitForMultipleObjects(MAX_THREADS,hThreads,TRUE,INFINITE);
for(int i=0;i<MAX_THREADS;i++)
CloseHandle(hThreads[i]);
system ("pause");
return 0;
}
我一直在做这个程序通过使用我在课堂上所学的,但我似乎无法让我的计划工作。如果有人可以请帮我清理我的程序,并帮助我将其运行,将不胜感激。
请解释一下你的程序在做什么(和/或不是做什么),它与应该做的不同。并评论你的代码! – 2014-09-29 00:17:10
我首先编写一个单线程程序,然后*处理使用线程使其更快。 – 2014-09-29 00:40:59
您的程序声称素数是一个不能被2,3,4,5,6,7,8或9整除的数字。这不完全是素数的定义。例如,2,3,5和7是素数。 – molbdnilo 2014-09-29 00:44:54