• <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 藍牙 閱讀(85) 評論(0)  編輯 收藏 引用
            狠狠综合久久AV一区二区三区| 国产91久久综合| 亚洲狠狠久久综合一区77777| 久久成人国产精品免费软件| 欧美精品丝袜久久久中文字幕| 77777亚洲午夜久久多喷| 嫩草伊人久久精品少妇AV| 久久精品免费全国观看国产| 色老头网站久久网| 中文字幕无码久久人妻| 日批日出水久久亚洲精品tv| 亚洲国产成人精品无码久久久久久综合 | 久久国产成人| 国产精品综合久久第一页| 国产精品99久久久久久董美香| 91精品久久久久久无码| 久久国产福利免费| 欧美久久久久久精选9999| 要久久爱在线免费观看| 性做久久久久久久| 狠狠色丁香婷婷综合久久来 | 久久www免费人成看国产片| 久久久久人妻一区精品| 亚洲欧洲精品成人久久曰影片 | 久久无码高潮喷水| 日韩av无码久久精品免费| 久久精品九九亚洲精品天堂| 青草影院天堂男人久久| 亚洲国产精品无码久久青草 | 亚洲国产一成久久精品国产成人综合 | 伊色综合久久之综合久久| 伊人久久综合精品无码AV专区| 97久久精品无码一区二区天美 | 精品综合久久久久久98| 狠狠色婷婷久久一区二区三区| 精品999久久久久久中文字幕 | 国产91久久综合| 亚洲精品乱码久久久久久自慰 | 久久中文字幕一区二区| 久久精品卫校国产小美女| 国产成人无码精品久久久久免费|