Помощ ( От C++ в Small Basic )

C/C++, Visual Basic, Pascal и други...
Post Reply
User avatar
DraveN
Потребител
Потребител
Posts: 145
Joined: 27 Aug 2010, 10:20

Помощ ( От C++ в Small Basic )

Post by DraveN »

Кодът ми в Small Basic:

Code: Select all

k=2
startk:

'Дали К има делител
j=2
IsPrime = 1
startj:
If(Math.Remainder(k,j)=0) Then
IsPrime = 0
  EndIf
j=j+1
If(j<k)then
  Goto startj
EndIf
'Проверка дали prime = 1 or 0
If(IsPrime = 1) Then
  TextWindow.Write(K+" ")
EndIf

k = k+1
If(k<100000)Then
  Goto startk
  EndIf
Код 1 на C++

Code: Select all

#include <iostream>
#include <cmath>
#include "timer.h"
using namespace std;
int main()
{
  // Ñúçäàâàíå íà òàéìåð è ñòàðòèðàíåòî ìó
  CTimer *timer = new CTimer;
  timer->Start();

  const long N = 1000000;
  bool a[N];

  for(int i = 0; i<N; i++) a[i] = 1;
  for(int i=2; i<sqrt(N); i++)
    if(a[i] == 1)
      for(int j=2*i; j<N; j++)
        if(j%i == 0) a[j] = 0;
  //for(int i=2; i<N; i++) if(a[i] == 1) cout<<i<<" "; // ïðîñòè ÷èñëà

  // Êðàé íà èçïúëíåíèåòî, âèçóàëèçàöèÿ íà âðåìåòî â ìèëèñåêóíäè
  timer->End();
  cout << "Time: " << timer->GetTimeInMilliseconds() << " ms" << endl;
  
  return 0;
}
Код 2 на C++

Code: Select all

#include<iostream>
#include "timer.h"
using namespace std;
int main()
{
     // Ñúçäàâàíå íà òàéìåð è ñòàðòèðàíåòî ìó
    CTimer *timer = new CTimer;
	timer->Start();

	long long a=0,b=1000000,c=0;
	if (a%2 == 0) a++;
	long long Nerr = ((b - a)*0.1)+1;
	
	for (long long i=a;i<=b;i+=2)
	if (i%10!=5) 
	{
		bool isPrime=true;
           for (long long j=3;j<i/Nerr;j+=2)
           {
                if(i%j==0) {
                    isPrime=false;
                    break;
                }
           }
		   if(isPrime) c++;
	}
	// cout << c; // áðîé ïðîñòè ÷èñëà
	
	// Êðàé íà èçïúëíåíèåòî, âèçóàëèçàöèÿ íà âðåìåòî â ìèëèñåêóíäè
    timer->End();
	cout << "Time: " << timer->GetTimeInMilliseconds() << " ms" << endl;
	
	return 0;
}
, за който е и необходим и класа timer.h + кода към него

Code: Select all

#ifndef TIMER_H
#define TIMER_H
#include <iostream>
#include <windows.h>
class CTimer
{
public:
	CTimer();
	void Start();
	void End();
	double GetTimeInSeconds();
	double GetTimeInMilliseconds();
	double GetTimeInMicroseconds();
	double GetTimeInNanoseconds();

private:
	LARGE_INTEGER mqStart;
	LARGE_INTEGER mqEnd;
	LARGE_INTEGER mqFreq;
};
CTimer::CTimer()
{
	QueryPerformanceFrequency(&mqFreq);
}
void CTimer::Start() 
{
	QueryPerformanceCounter(&mqStart);
}
void CTimer::End() 
{
	QueryPerformanceCounter(&mqEnd);
}
double CTimer::GetTimeInSeconds() 
{
	return (mqEnd.QuadPart - mqStart.QuadPart)/(double)mqFreq.QuadPart;
}
double  CTimer::GetTimeInMilliseconds() 
{
	return (1.0e3*(mqEnd.QuadPart - mqStart.QuadPart))/mqFreq.QuadPart;
}
double CTimer::GetTimeInMicroseconds() 
{
	return (1.0e6*(mqEnd.QuadPart - mqStart.QuadPart))/mqFreq.QuadPart;
}
double CTimer::GetTimeInNanoseconds() 
{
	return (1.0e9*(mqEnd.QuadPart - mqStart.QuadPart))/mqFreq.QuadPart;
}
#endif
______________________________________________________________________________________________________

Задача свързана с моя код ( Осъществена е ): Да се изкарат простите числа до 10,000.

Задача към мене: Търсят се простите числа до 1000000, като решението по метода на Решето на Ератостен е публикувано в предоставените кодове, а именно Код 1 и Код 2 + timer.h. Предоставеният Код 1 ИЛИ Код 2 + timer.h да се (include) инклууднат чрез код в Small Basic.

Коментар от мене: Ще съм Ви Благодарен, ако някой ми помогни с осъществяването на задачата. Не е задължително да е нещо сложно, тъй като тепърва уча тези неща и най простият метод ще ми е от помощ.
Благодаря отново за отеленото време!
User avatar
georgib1
V.I.P
V.I.P
Posts: 217
Joined: 07 Jul 2015, 11:58
Favorite version: CS: Global Offensive

Re: Помощ ( От C++ в Small Basic )

Post by georgib1 »

Въртиш един цикъл, проверяваш дали брояча е просто, ако е - отпечатваш, ако не е - биеш му шута.
Post Reply

Return to “Системно програмиране”