| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1128 人关注过本帖
标题:[求助]ACM中的题目
只看楼主 加入收藏
竹落花飘
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-6
收藏
 问题点数:0 回复次数:14 
[求助]ACM中的题目

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.

我解的是这样:

#include
main()
{
int n;
scanf("%d",&n);
if(n%10)
printf("It's not a MaoLaoDa number.");
else
printf("It's a MaoLaoDa number.");
}

但这样的是不对的,请问是怎么回事,我自己也试了一下,输入大整数的时候就不对了,请教是哪里出错了.

谢谢!!

搜索更多相关主题的帖子: ACM 
2006-04-11 23:39
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

你这想法。。。
[CODE]
#include <stdio.h>
#include <conio.h>
#include <math.h>
int Prime(long);
void main()
{
long n,i,j,m;

scanf("%ld",&n);
m=sqrt(n);
for(i=2;i<=m;i++) /*这里3以后可以每次加2,自己改*/
{
if(n%i!=0)
continue;
j=n/i;
if( Prime(i) && Prime(j) )
{
printf("It's a MaoLaoDa number.\n");
break;
}
}
if(i>m)
printf("It's not a MaoLaoDa number.\n");
getch();
}

int Prime(long n)
{
int i,j;

i=sqrt(n);
for(j=2;j<=i&&n%j!=0;j++);
return j>i ? 1:0 ;
}

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-12 01:27
竹落花飘
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-6
收藏
得分:0 
谢谢!现在还不是很懂,研究一下!
2006-04-12 23:31
sunliulin80
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-12-13
收藏
得分:0 

#include "iostream.h"
int a[100];
int n=0;
int zhishu(int m)//判断该数的因数是不是质数
{
for(int i=1;i<=m/2;i++)
{
if(m%i==0)
{return 0;
break;
}
}
if(i>m/2)
return 1;
}
void yinshu(int m)//求出该数所有的因数
{
for(int i=1;i<=m;i++)
{
if(m%i==0)
{
a[n]=i;
n++;
}
}
cout<<n<<endl;//输出因数的个数
}
void main()
{
int b[100],m,q=0,flag=1;
cout<<"请输入一个数";
cin>>m;
yinshu(m);
for(int i=0;i<n;i++)
{
cout<<a[i]<<endl;//输出所有的因数
if(zhishu(a[i])==1)
{
b[q]=a[i];
}
q++;
}
for(i=1;i<q-2;i++)
for(int j=i+1;j<q-2;j++)
{
if(b[i]*b[j]==m)
{
flag=1;
break;
}
else flag=0;
}
if(flag==1)
cout<<"这是一个“猫老大数”";
else
cout<<"这不是一个“猫老大数”";
}

2006-04-13 15:31
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

为什么非要用C++? 除了头文件,输入输出函数不同,没别的区别(这函数)


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-13 23:39
醉天使
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-4-6
收藏
得分:0 

2好像不能通过了?????


2006-04-14 17:35
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

不能通过那是编译器不同


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-14 23:19
steven4ilove
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-4-15
收藏
得分:0 
#include"stdio.h"
main()
{
int a,b=0,i=2;
scanf("%d",&a);
if(a<=2)printf("这不是一个猫老大数\n");
else
{
for(;i<a;i++)
{
if(a%i==0)b++;
}
if(b==2)printf("这是一个猫老大数\n");
else printf("这不是一个猫老大数\n");
}
}
2006-04-15 15:03
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

楼上逻辑错误


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-15 23:01
steven4ilove
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-4-15
收藏
得分:0 

啊?哪?错?我新手。多指教~
不过上面的是没问题的。绝对可行,我用的是turboc3.0

[此贴子已经被作者于2006-4-16 1:38:52编辑过]

2006-04-16 01:30
快速回复:[求助]ACM中的题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026496 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved