和青蛤 发表于 2022-9-26 21:32:12

求助!一个不会的素数编程题!

就是前几天全国二级,我做到最后一个编程题死翘翘了!
原题如下:需要判断一个数是否是素数,并且将它分解成两个素数的乘积,并且要求其中一个素数大于另一个素数。
{:5_104:} {:5_104:} {:5_104:}

jackz007 发表于 2022-9-26 22:16:54

本帖最后由 jackz007 于 2022-9-27 17:51 编辑

         楼主肯定把题目要求搞错了, 一个数恰好是两个不相等素数的乘积?这不是 "火星撞地球" 般的巧合吗???
#include <stdio.h>

int main(void)
{
      unsigned long long c , i ,k , n            ;
      scanf("%I64u" , & n)                           ;
      printf("%I64u = " , n)                         ;
      for(i = 2 , k = n , c = 0 ; i * i < k + 1 ;) {
                if(! (k % i)) {
                        k /= i                         ;
                        if(c) printf(" x ")            ;
                        printf("%I64u" , i)            ;
                        c ++                           ;
                } else {
                        i ++                           ;
                }
      }
      if(c) printf(" x ")                            ;
      printf("%I64u\n" , k)                        ;
}
       编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
13785431
13785431 = 11 x 19 x 71 x 929

D:\\C>

henkuderen 发表于 2022-9-27 16:52:29

jackz007 发表于 2022-9-26 22:16
楼主肯定把题目要求搞错了, 一个数恰好是两个不相等素数的乘积?这不是 "火星撞地球" 般的巧合吗 ...

会不会是判断是不是素数,不是素数的进行质数分解

jackz007 发表于 2022-9-27 17:43:09

本帖最后由 jackz007 于 2022-9-27 17:48 编辑

henkuderen 发表于 2022-9-27 16:52
会不会是判断是不是素数,不是素数的进行质数分解

         我给出的代码就是现成的这种效果。如果键入的是质数,比如 13,那么,打印结果是
13 = 13
页: [1]
查看完整版本: 求助!一个不会的素数编程题!