• <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)  編輯 收藏 引用
            久久高清一级毛片| 久久久免费精品re6| 色综合久久综精品| 久久亚洲中文字幕精品一区| 2021精品国产综合久久| 色天使久久综合网天天| 亚洲精品国产字幕久久不卡| 欧美激情精品久久久久| 欧美一级久久久久久久大| 99久久精品无码一区二区毛片| 久久人人爽人人爽人人片AV高清| 超级碰久久免费公开视频| 国产精品美女久久久久久2018| 色综合久久久久综合99| 久久久av波多野一区二区| 久久午夜无码鲁丝片午夜精品| 亚洲欧美日韩精品久久| 久久精品中文字幕大胸| 香蕉久久久久久狠狠色| 91久久香蕉国产熟女线看| 伊人久久综合无码成人网| 久久久精品国产免大香伊| 久久电影网一区| 精品无码久久久久久国产| 久久久久高潮毛片免费全部播放 | 久久亚洲AV成人无码| 国产99久久久久久免费看| 久久久久人妻一区精品色| 久久笫一福利免费导航 | 久久这里只精品国产99热| 久久久久黑人强伦姧人妻| 欧美午夜A∨大片久久 | avtt天堂网久久精品| 亚洲国产欧美国产综合久久| 日韩欧美亚洲国产精品字幕久久久| 72种姿势欧美久久久久大黄蕉| 日韩人妻无码精品久久免费一 | 人妻精品久久无码专区精东影业| 久久伊人精品一区二区三区| 久久久久亚洲精品日久生情| 亚洲国产小视频精品久久久三级|