洛谷-牛数-野题

题目描述 Description

我们下面来研究整数性质,我们知道质数只有 1和自身两个因子,合数至少
有除了 1和自身的其他因子,我们也知道“猫老大数”是只能分解成两个质数乘
积形式的数,那么能分解成两个合数的数呢?我们称之为“牛数”。下面编程判
断整数是否为“牛数”。

输入输出格式 Input/output

输入格式:
第一行为 t(1<=t<=100),表示测试数据组数。
接下来 t行,每行一个正整数x(1<=x<=10^9)
输出格式:
对于每个输入数据 x,判断它是否为“牛数”,并输出一行字符串:如果它
是“牛数”,输出“cow”,否则输出“no”。
输入输出样例 Sample input/output
样例测试点#1
输入样例:
2
15
36
输出样例:
no
cow
思路:先把这个数分解为两个因数,传入判断质数函数判断即可,注意:要两个因数都为合数且这个数每次都不能被大于3的数整除
代码如下:
 1 #include <stdio.h>
 2 #include <math.h>
 3 int prime(int k); 
 4 int main()
 5 {
 6     int n,cow,i,flag,j;
 7     //freopen("cow.in","r",stdin);
 8     //freopen("cow.out","w",stdout);
 9     scanf("%d",&n);
10     for(j=0;j<n;j++)
11     {
12         flag=0;
13         scanf("%d",&cow);
14         for(i=4;i<=(sqrt(cow));i++) 
15         {
16             if(cow%i==0&&prime(i)==0&&prime(cow/i)==0)//如果是,输出yes 
17             {
18                 printf("cow\n");
19                 flag=1;
20                 break;    
21             }            
22         }                    
23         if(flag==0) printf("no\n");//不是牛数,输出no 
24     }
25     return 0;
26 }
27 int prime(int x) //是合数返回0,不是返回1    
28 {    
29     int i,l;        
30     l=sqrt(x);
31     for(i=2;i<=l;i++)    
32         if(x%i==0) return 0;                
33              return 1;    
34 }     

 

posted @ 2015-07-15 17:13  Memoryヾノ战心  阅读(642)  评论(1编辑  收藏  举报