您的位置:首页 > 其它

合数乘积

2014-02-19 14:56 204 查看
点击打开链接

合数乘积

TimeLimit: 1 Second MemoryLimit: 32 Megabyte

Totalsubmit: 9 Accepted: 2

Description
Thala教授在我 们学院中最受欢迎. 尽管选择Thala教授意味着你今后的学习任务将很多很艰难, 但鉴于当前的世界形势, 学生们需要掌握更多知识来找到好的工作, 因此越来越多的学生想要选择Thala教授作为他们的导师. 然而我们学校有规定, 每个教授带的学生数目都有上限, 因此Thala教授需要挑出最为杰出的学生作为他的弟子. Thala教授知道, 想要学好计算机, 学生们需要丰富的数学知识. 于是, Thala教授总是用许多数学题目来挑选他的学生.

这一年, Thala教授的题目之一是这样的: 给出数字n, 如果n可以被表示为2个合数的乘积, 这个数就被叫做"thala number", 否则就被叫做"loser number'. 例如81=9*9, 因此81就是"thala number". Thala教授交给学生们许多数, 要求学生判断这些数是"thala number"还是"loser number".

Softa是 Thala教授的一个疯狂的仰慕者, 他十分渴望成为Thala教授的学生, 并在Thala教授的实验室中学习. Softa知道他必须在Thala教授的考试中表现出色, 否则Thala教授将不会注意到他. 但当面对Thala教授的数字的时候, Softa感到紧张, 他对自己说:"Thala教授的确和传说中一样伟大. 可是这些数字实在太多, 一个人无法在这么短的时间内作出回答. Thala教授一定是想要同时考察学生的数学与编程知识. 因此, 我需要一个程序来计算出答案." 想到了这点, Softa感觉好多了,
因为他有许多朋友参与了"ACM/ICPC"竞赛, 他们可以帮助Softa. 当然, 你也想要想Softa展示你的编程技巧, 因此, 你的程序应该高效, 这样才能让Softa更加钦佩你.

Input
Thala教授发布题目的方式是这样的: 每个学生会收到很多组测试数据, 按Thala教授的规则, 测试数据将越来越难, 这样他就可以轻松地控制学生的数量. 只有回答正确的学生可以进入下一道题目, 否则就会退出考试. 这样下去直到剩余的学生数目等于Thala教授想要的学生数目.

Output
对于每组输入数据, 请在时间T之内判断数据中的每一个数是"thala number"还是"loser number", 并输出你的答案. 在每组数据之间输出一个空白行.

Sample Input

2 2

81

25

1 1

16

Sample Output

thala number

loser number

thala number

首先除以最小质因子,再除以最小质因子。最后判断这个数是否是合数即可。

#include<stdio.h>
#include<string.h>
#include<math.h>

int main(){
int t,n,c;
int i;
bool e ;
int b;
int flag = 1;
while(scanf("%d%d",&t,&c)!=EOF){
if(!flag ) printf("\n");
flag = 0;
while(t--){
scanf("%d",&n);
e = false;
b = 0;
int d = (int) sqrt((double) n);
for(i=2;i<=d;i++){
if(n%i==0){
b = n/i;
e = true;
break;
}
}
if(!e) {
printf("loser number\n");
continue;
}
e = false;
d = (int)sqrt((double)b);
for(i=2;i<=d;i++){
if(b%i==0){
n = b/i;
e = true;
break;
}
}
if(!e) {
printf("loser number\n");
continue;
}
e = false;
d = (int)sqrt((double)n);
for(i=2;i<=d;i++){
if(n%i==0){
b = n / i;
if(b>1) e = true;
break;

}
}
if(e) printf("thala number\n");
else printf("loser number\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: