求助!一个不会的素数编程题!
就是前几天全国二级,我做到最后一个编程题死翘翘了!原题如下:需要判断一个数是否是素数,并且将它分解成两个素数的乘积,并且要求其中一个素数大于另一个素数。
{:5_104:} {:5_104:} {:5_104:} 本帖最后由 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> jackz007 发表于 2022-9-26 22:16
楼主肯定把题目要求搞错了, 一个数恰好是两个不相等素数的乘积?这不是 "火星撞地球" 般的巧合吗 ...
会不会是判断是不是素数,不是素数的进行质数分解 本帖最后由 jackz007 于 2022-9-27 17:48 编辑
henkuderen 发表于 2022-9-27 16:52
会不会是判断是不是素数,不是素数的进行质数分解
我给出的代码就是现成的这种效果。如果键入的是质数,比如 13,那么,打印结果是
13 = 13
页:
[1]