Блок-схема во вложении. Конечно, она реализует самый примитивный алгоритм, который заключается в умножении В раз А на А. Существуют более оптимальные алгоритмы, основанные на двоичном представлении В. Пусть В=5. Его двоичное представление 101, т.е. 2²+1. Это означает. что нам надо перемножить А и (А*А)². Т.е. вычисление оптимально идет так: С=А², С=С², С=С*А. Итого три умножения вместо четырех. Для больших В "экономия умножений" будет очень большой. Например, для В=1024 потребуется не 1023 умножения, а всего 10.
#include <iostream>
using namespace std;
int k=2;
bool StrangeSeq(int n){
if (k<n){
if(n%k==0){
cout<<"false";
return false;
}
k++;
StrangeSeq(n);
}
else
{
cout<<"true";
return true;
}
}
int main(){
int n;
cin>>n;
StrangeSeq(n);
cin.get();
cin.get();
}
Конечно, она реализует самый примитивный алгоритм, который заключается в умножении В раз А на А.
Существуют более оптимальные алгоритмы, основанные на двоичном представлении В.
Пусть В=5. Его двоичное представление 101, т.е. 2²+1. Это означает. что нам надо перемножить А и (А*А)². Т.е. вычисление оптимально идет так: С=А², С=С², С=С*А. Итого три умножения вместо четырех. Для больших В "экономия умножений" будет очень большой. Например, для В=1024 потребуется не 1023 умножения, а всего 10.