zoukankan      html  css  js  c++  java
  • codevs 2964 公共素数因数

    提交地址:http://codevs.cn/problem/2964/

    2964 公共素数因数

     

     时间限制: 1 s
     空间限制: 32000 KB
     题目等级 : 白银 Silver
     
     
     
    题目描述 Description

    小单同学刚学习了一个数分解成几个素数(也叫质数)因子相乘的知识。

    例如:12=2*2*3;25=5*5;144=2*2*2*2*3*3······等,比如,第一个表达式,说明12这个整数可以分解出2、2、3这三个质数因子。老师给他布置了一个作业,小单看来看去,怎么都不会做,只好虚心求教各位同学(他自己睡觉去了!)

       问题是这样的:已知两个正整数a,b;请问a,b相同的素(质)因子有几个。请输出个数。例如:12与144 相同的素(质)因子为2,2,3;则输出3。12与25 相同的素(质)因子没有;则输出0。

    输入描述 Input Description

    第一行两个数:a,b,中间用一个空格分隔。

    输出描述 Output Description

    一个整数,表示a和b相同的素(质)因子个数。

    样例输入 Sample Input

    12  144

    样例输出 Sample Output

    3

    数据范围及提示 Data Size & Hint

       对于50%的数据,保证2≤a,b≤100

       对于100%的数据,保证2≤a,b≤10000

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int n,m,ans;
     6 
     7 int prime(int n)
     8   { //求素数,大家都知道吧?
     9     int i;
    10     if (n==1 || n==0)return 0;
    11     if (n==2)return 1;
    12     for(i=2;i*i<n;i++)
    13         if(n%i==0)return 0;
    14     if(i*i==n)return 0;
    15     return 1;
    16   }
    17 
    18 int solve()
    19   { //求公因数
    20     int a=n,b=m,c=a%b;
    21     while(c!=0){ //辗转相除法
    22         a=b;
    23         b=c;
    24         c=a%b;
    25     }
    26     return b;
    27   }
    28 
    29 void work(int n)
    30   { //求给n,m的公因数分解,然后判断如果是质数,那么就+1
    31     int i=2;
    32     while(n!=1){
    33         if(n%i==0 && prime(i)==1){ans++;n/=i;}
    34         else i++;
    35     }
    36     cout<<ans<<endl; //输出
    37   }
    38 
    39 int main(){
    40     int s;
    41     cin>>n>>m; //读入
    42     s=solve();
    43     work(s);
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    go并发和并行
    goroutine
    go并发
    wampserver配置问题
    获取字符串的长度
    mysql中事件失效如何解决
    Go语言中Goroutine与线程的区别
    Mosquitto服务器的日志分析
    phpexcel导出数据 出现Formula Error的解决方案
    Centos6.X 手动升级gcc
  • 原文地址:https://www.cnblogs.com/yuemo/p/5517077.html
Copyright © 2011-2022 走看看