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
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;
}
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;
}
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.
Коментар от мене: Ще съм Ви Благодарен, ако някой ми помогни с осъществяването на задачата. Не е задължително да е нещо сложно, тъй като тепърва уча тези неща и най простият метод ще ми е от помощ.
Благодаря отново за отеленото време!