主题:求助:猫老大数算法
zhanjianbin
[专家分:290] 发布于 2005-11-11 20:11:00
Problem
猫老大很喜欢研究数字,特别是喜欢质数。一天,猫老大发现有一些数字可以表示成两个质数相乘的形式。比如,10=2×5. 2,5都是质数,所以 10 是一个“猫老大数 ”。所以猫老大决定考考彩虹,他告诉彩虹一个数 n ,判断 n 是不是“猫老大数”?
Input
此题含多组数据,每组数据为一个数 n (1<=n<=2^31-1).
Output
对于每组数据输出一行,如果 n 是一个“猫老大数”则输出 “It's a MaoLaoDa number.” 否则输出“It's not a MaoLaoDa number.”
Sample Input
10
Sample Output
It's a MaoLaoDa number.
[em11][em19][em19][em19][em19][em19]
回复列表 (共9个回复)
沙发
FancyMouse [专家分:13680] 发布于 2005-11-12 09:57:00
只有2个质因子的数是猫老大数
板凳
zhanjianbin [专家分:290] 发布于 2005-11-14 20:24:00
请说一下具体算法,如果能写下更好用freepascal
3 楼
小虾虾 [专家分:300] 发布于 2005-11-17 16:22:00
直接枚举
就是打印时这个’要用ACSII
4 楼
lala2 [专家分:70] 发布于 2005-11-17 20:31:00
此数的约数个数为4
1,本身,及2个质数
5 楼
lala2 [专家分:70] 发布于 2005-11-17 20:43:00
program sample;
var
number,i,k:longint;
begin
read(number);
for i:=2 to trunc(sqrt(number)) do
if number mod i=0 then k:=k+1;
if k=1 then writeln('It is a Maolaoda number.')
else writeln('It is not a Maolaoda number.');
end.
6 楼
Mony [专家分:20] 发布于 2005-11-17 21:26:00
sqrt(2^31) 也不到50000
枚举就可以过了.
在2..sqrt(n)里 MOD=0就不是 没有就是
7 楼
freemyself [专家分:410] 发布于 2005-11-18 11:52:00
问一个小问题,质数的平方算不算
8 楼
767 [专家分:220] 发布于 2005-11-18 16:45:00
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
void sushu(vector<int>&v,int m){
for(int i=2;i<m;++i){
for(int j=2;j<=i;++j){
if(j!=i){
if(i%j==0) continue;
}
else v.push_back(i);
}
}
}
void main(){
int m;
cin>>m;
vector<int>n;
sushu(n,m);
for(int i=0;i<n.size();++i){
for(int j=i;j<n.size();++j){
if(m==n[i]*n[j+1])
cout<<m<<"is a bicat"<<n[i]<<" "<<n[j+1]<<endl;
if(m<n[i]*n[j+1])
break ;
}
}
}
9 楼
FancyMouse [专家分:13680] 发布于 2005-11-18 16:52:00
去看我的Blog吧,有更加好的算法。
我来回复