• <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 藍牙 閱讀(84) 評論(0)  編輯 收藏 引用
            97久久精品国产精品青草| 亚洲色欲久久久综合网| 欧美久久精品一级c片片| 99久久精品国产毛片| 99久久国产免费福利| 狠狠人妻久久久久久综合蜜桃| 久久乐国产精品亚洲综合| 久久精品国产亚洲一区二区三区| 久久久久一级精品亚洲国产成人综合AV区| 粉嫩小泬无遮挡久久久久久| 99热精品久久只有精品| 亚洲av伊人久久综合密臀性色| 久久精品无码专区免费东京热| 国产999精品久久久久久| 深夜久久AAAAA级毛片免费看| 精品国产乱码久久久久久郑州公司| 国产综合久久久久久鬼色| 国产成人久久777777| 欧美熟妇另类久久久久久不卡| 久久久久亚洲AV综合波多野结衣 | 无码人妻少妇久久中文字幕| 无码伊人66久久大杳蕉网站谷歌| 欧美精品福利视频一区二区三区久久久精品 | 国产精品伦理久久久久久| 人妻精品久久无码专区精东影业| 一级做a爰片久久毛片免费陪| 亚洲国产精品久久久久久| 久久精品免费一区二区三区| 九九久久自然熟的香蕉图片| 国产亚洲欧美精品久久久| 91超碰碰碰碰久久久久久综合| 久久本道伊人久久| 性做久久久久久久久老女人| 中文字幕无码久久人妻| 久久久久久亚洲AV无码专区| 一级女性全黄久久生活片免费 | 国产一区二区精品久久岳| 久久婷婷国产麻豆91天堂| 久久影院久久香蕉国产线看观看| 久久精品国产91久久麻豆自制| 伊人色综合久久天天|