컴퓨터 알고리즘 설계 및 분석 교과서(왕효동 저) 수업 후 알고리즘 실현 문제 1-3 최대 약수 문제
/*****************************************************************
source: 1-3
mean of the title: ,
2.0: ,n n=p1^a1*p2^a2*p3^a3*…*pk^ak
,n (a1+1)(a2+1)(a3+1)…(ak+1)
*****************************************************************/
#include
#include
#include
using namespace std;
int prime_num[10000];//
int isprime(int n){// n
bool flag = true;
for (int i = 2; i <= sqrt(n); i++){
if (n%i == 0){
flag = false;
break;
}
}
return flag;
}
int solve(int n){// n
memset(prime_num, 0, sizeof(prime_num));
int count = 1;
int num = n;
if (num == 1)
return 1;
if (isprime(num))
return 2;
for (int i = 2; i <= sqrt(num); i++){//
if (!(n%i)){
prime_num[i]++;
n /= i;
i--;// i,
}
}
for (int i = 2; i <= num; i++){
if (prime_num[i]){
//cout<> a >> b;
for (int i = a; i <= b; i++){
if (solve(i)>max){
max = solve(i);
}
}
cout << "The largest number of divisor is " << max << endl;
return 0;
}
폭력 해답 코드
#include
#include
using namespace std;
int main(){
int a,b;
int number,max=0;
cout<>a>>b;
for(int i=a;i<=b;i++){
number=0;
for(int j=1;j<=sqrt(i);j++){
if(!(i%j)){
if(j!=(i/j))
number+=2;
else
number+=1;
}
}
if(number>max)
max=number;
}
cout<
약수 개수의 정리가 증명된 일부 개인적인 사고방식에 대한 가설 n=2^n13^n3을 추가하면 n1개는 2곱하기 n2개는 3이고 n1개는 n2개2에서 2를 취하면 n2개의 3에서 2를 곱하기 (n2+1)개와 3을 곱하기 때문에 한 번 곱할 때마다 원수가 두 개 더 많아진다. n1개의 2에서 2를 취하면 n2개의 3에서 2를 취하기 (n2+1)개와 2개의 2를 곱하면 원수가 더 많아진다.그러면 n1개 2로 확장, 0개 2를 뽑을 때 36이 n1개 2에서 모두 (n1+1) 개 2(0개 2를 뽑을 때 1과 원수를 곱하기)를 뽑기 때문에 원수는 모두 2*(n1+1)*(n2+1)*(n2+1)가 있고, 중복이 있기 때문에 마지막에 2로 나누어야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.