
Auzius
6 год назад
C++ или Си: Представить натуральное число N в виде произведения простых сомножителей.
ОТВЕТЫ

Arkadiy
Aug 2, 2019
#include lt;iostreamgt;
#include lt;cmathgt;
using namespace std;
bool prost(int m){
int k = 0;
for (int i=2; ilt;=sqrt(m); i++)
if (m i == 0) k++;
return k==0;
}
int main(){
int n, r;
int i = 1;
cout lt;lt; "n = ", cin gt;gt; n, cout lt;lt; "\n";
if (prost(n)) {
cout lt;lt; "1 * " lt;lt; n lt;lt; " = " lt;lt; n lt;lt; "\n";}
else {
r = n;
while (r != 1){
i++;
if (prost(i)){
while (r i == 0){
r = r / i;
cout lt;lt; i;
if (r != 1) cout lt;lt; "*";
}
}
}
cout lt;lt; "=" lt;lt; n lt;lt; "\n";
}
return 0;
}
Пример:
n = 2720
2*2*2*2*2*5*17=2720
#include lt;cmathgt;
using namespace std;
bool prost(int m){
int k = 0;
for (int i=2; ilt;=sqrt(m); i++)
if (m i == 0) k++;
return k==0;
}
int main(){
int n, r;
int i = 1;
cout lt;lt; "n = ", cin gt;gt; n, cout lt;lt; "\n";
if (prost(n)) {
cout lt;lt; "1 * " lt;lt; n lt;lt; " = " lt;lt; n lt;lt; "\n";}
else {
r = n;
while (r != 1){
i++;
if (prost(i)){
while (r i == 0){
r = r / i;
cout lt;lt; i;
if (r != 1) cout lt;lt; "*";
}
}
}
cout lt;lt; "=" lt;lt; n lt;lt; "\n";
}
return 0;
}
Пример:
n = 2720
2*2*2*2*2*5*17=2720
#include lt;iostreamgt;#include lt;cstdlibgt;#include lt;vectorgt;bool fPrime(int n){ for (int i = 2; i lt;= n / 2; i++) if (ni == 0) return false; return true;}int main(){ int num, n, i, copy; std::vectorlt;intgt; PrimDiv; std::cin gt;gt; num; copy = num; for (n = 2; n lt;= num / 2 amp;amp; num != 0; n++) if (fPrime(n) == true) while (copyn == 0) { PrimDiv.push_back(n); copy /= n; } std::cout lt;lt; num lt;lt; "="; if (PrimDiv.empty()) std::cout lt;lt; num; else { for (i = 0; ilt;PrimDiv.size() - 1; i++) std::cout lt;lt; PrimDiv[i] lt;lt; "*"; std::cout lt;lt; PrimDiv[PrimDiv.size() - 1]; } system("pause"); return 0;}
285