首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

并行计算实现判断一个数是否素数-Win32和.Net两种方式结合

2013-11-02 
并行计算实现判断一个数是不是素数--Win32和.Net两种方式结合// Win32D.cpp : 定义控制台应用程序的入口点

并行计算实现判断一个数是不是素数--Win32和.Net两种方式结合

// Win32D.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>#include <process.h>#include <math.h>#include <iostream>#include <fstream>using namespace std;int m;float c;int flag=0;int c2;HANDLE Thread1,Thread2;void StartThread1(LPVOID param){for(int i=1;i<=m;i+=2){if(flag==0){if(c2%i==0&&i!=1)flag=1;}elsebreak;}}void StartThread2(LPVOID param){for(int j=2;j<=m;j+=2){if(flag==0){if(c2%j==0)flag=1;}elsebreak;}}int _tmain(int argc, _TCHAR* argv[]){cin>>c;m=sqrt(c);c2=(int)c;Thread1=CreateEvent(NULL,FALSE,FALSE,NULL);//cout<<"1"<<endl;Thread2=CreateEvent(NULL,FALSE,FALSE,NULL);//cout<<"2"<<endl;_beginthread(StartThread1,0,NULL);//cout<<"3"<<endl;_beginthread(StartThread2,0,NULL);//cout<<"4"<<endl;//WaitForSingleObject(Thread2,INFINITE);cout<<"5"<<endl;if(flag==0)cout<<"是素数"<<endl;else cout<<"不是素数"<<endl;cin>>c;//保留输出框return 0;}/*    .NET并行判断一个数是不是素数 */using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace DotNetWyYt{    class Program    {        public static int m;        public static int c;        public static int flag = 0;        public static int c2;        public  static void WithDraw1()        {            for (int i = 1; i <= m; i += 2)            {                if (flag == 0)                {                    if (c2 % i == 0 && i != 1)                        flag = 1;                }                else                    break;            }        }        public static void WithDraw2()        {            for (int j = 2; j <= m; j += 2)            {                if (flag == 0)                {                    if (c2 % j == 0)                        flag = 1;                }                else                    break;            }        }        static  void Main(string[] args)        {            c = 23;            m = (Int32)Math.Sqrt((double)c);            c2 = (int)c;            ThreadStart thread1 = new ThreadStart(WithDraw1);            Thread newThread1 = new Thread(thread1);            ThreadStart thread2 = new ThreadStart(WithDraw2);            Thread newThread2 = new Thread(thread2);            newThread1.Start();            newThread2.Start();            if (flag == 0)                Console.WriteLine("是素数");            else                Console.WriteLine("不是素数");        }    }}

热点排行