• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            藍牙博客

            i want to be a coder~

               :: 首頁 ::  ::  :: 管理

            搜索

            •  

            最新評論

            浙大1390 素數問題

            1390素數問題
            Time Limit:1000MS  Memory Limit:32768K


            Description:
            任何一個整數,都可以有多個素數相乘,現在給你一個數N(1< N<=65535),請你把它分成多個素數相乘。

            Input:
            輸入一個整數N,輸入0表示結束.
            Output:
            輸出相應的結果.
            Sample Input:
            2
            12
            16
            65535
            0
            Sample Output:
            2
            2*2*3
            2*2*2*2
            3*5*17*257

            解答:
            #include <iostream>
            #include <cmath>
            using namespace std;
            bool prime(int x)
            {
              if(x==2) return true;
              for(int i=2;i<=sqrt((float) x);i++)
              //如果為i<t,輸入16輸出為2*2*4
              //因為,sqrt(4)等于2時就退出循環了,于是程序將4也當作了素數
              {
                if(x%i==0)
                return false;
                    
              }
               return true;

            void f(int x)
            { int tag=2,flag=0;
              for(;;)
             {
               if(prime(x))
                {
                if(flag>0) cout<<'*';
                cout<<x<<endl;
                return;//跳到無限循環的唯一地方
                }
               if(x%tag==0)
                {
                 if(flag>0) cout<<'*';         
                 cout<<tag;
                 x/=tag;
                 flag++;
                }
               else
               {   tag++;//沒有這一句,輸入65535進入死循環
             
                   while(!prime(tag))
                   tag++;
               }         
             }


                 

            int main()
            {int t;
            while(cin>>t)
            {
             if(!t) break;
             f(t);
                         
                        
            }
              system("pause");
               return 0;
            }
            //用VC出現編譯錯誤,用GCC提交成功,
            //因為sqrt函數給的參數要轉化為浮點數

             

            解答二:

            #include <iostream>
            #include <cmath>
            using namespace std;
            bool prime(int x)
            {
             if(x==2) return true;
             int q=sqrt( (double)x );//注意這里的轉化
             for(int i=2;i<=q;++i)
              if(x%i==0) return false;
              return true;
            }
            void f(int x)
            {
             int ans=0;
             int tag=2;
             while(1)//變化后的數要重新拿去用if語句做判斷就需要一個循環
                {
              if(prime(x))
              {
               if(ans>0) cout<<'*';
               cout<<x<<endl;
               return ;
              }
              if(x%tag==0)//不是素數跳到這里,先除以最小的素數2
                    //如果既不是素數,也不是被2整除,再跳到else部分,讓除數自增到一個較大的素數
              {
               if(ans>0) cout<<'*';
               cout<<tag;
               x/=tag;
               ++ans;//用來控制什么時候輸出*這個符號
              }
              else
              {
               ++tag;
               while(!prime(tag))//當除數不是素數時將其自加直到為素數為止
                ++tag;
              }
             }
            }
            int main()
            {
             int n,tag=0,i;
             while(cin>>n)
             {
              if(!n) break;
              f(n);
             }
             return 0;
            }


            文章來源:http://www.cnblogs.com/qnbs1/archive/2010/03/21/1691077.html
            posted on 2010-03-21 17:58 藍牙 閱讀(88) 評論(0)  編輯 收藏 引用
            91精品国产高清久久久久久国产嫩草| 国产亚州精品女人久久久久久| 亚洲国产欧美国产综合久久| 97r久久精品国产99国产精| 91精品国产综合久久香蕉| 久久精品国产亚洲AV久| 欧美久久精品一级c片片| 亚洲午夜精品久久久久久app| 好久久免费视频高清| 久久99热这里只频精品6| 日韩一区二区久久久久久| 亚洲精品tv久久久久久久久| 精品久久久久久久久久中文字幕| 麻豆亚洲AV永久无码精品久久| 久久久久久国产a免费观看不卡| 色婷婷久久综合中文久久蜜桃av| 久久黄视频| 久久精品国产亚洲Aⅴ香蕉| 国内精品久久久久久久97牛牛| 亚洲午夜久久久| 99久久精品国产综合一区| 国产精品99久久久久久人| 久久久亚洲AV波多野结衣| 久久久久亚洲AV成人网人人网站| 国产一级持黄大片99久久| 久久久精品2019免费观看| 久久久久亚洲av综合波多野结衣 | 要久久爱在线免费观看| 久久精品二区| 久久综合九色欧美综合狠狠| 国产午夜福利精品久久| 国产激情久久久久影院小草 | 99国产精品久久| 久久精品一区二区国产| 99久久免费国产精精品| 国产精品久久久久久久久鸭 | 偷偷做久久久久网站| 久久精品日日躁夜夜躁欧美| 99久久99久久精品国产片果冻| 中文字幕精品无码久久久久久3D日动漫 | 久久91综合国产91久久精品|