鱼C论坛

 找回密码
 立即注册
查看: 2395|回复: 5

[已解决]600851475143的最大质因数为6857

[复制链接]
发表于 2022-9-7 01:19:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h> //算出结果最大为6857,和答案不符合,不知道哪里有错误

int main() {
//        int  i, j;
        long long int x, i, j;
        x = 600851475143 ;
        for (i = 2;; i++) {
                while (x % i == 0) {
                        x = x / i;
                }
                if (x < i) {
                        break;
                }
        }
        printf("600851475143的最大质因数为%lld\n", i);
        return 0;
}
最佳答案
2022-9-7 17:41:08
本帖最后由 jackz007 于 2022-9-7 18:30 编辑
阿亮不减肥 发表于 2022-9-7 16:48
主要是自己写的,没有自信是对,只能保证程序运行是没问题的;至于结果不知道对不对;


        我们可以为 600851475143 分解质因数:
#include <stdio.h>

int main(void)
{
        int c                               ;
        long long d , k , n                 ;
        printf("请输入一个正整数 : ")       ;
        scanf("%I64d" , & n)                ;
        printf("%I64d = " , n)              ;
        for(c = 0 , d = n , k = 2 ; k * k < d + 1 ;) {
                if(! (d % k)) {
                        if(c) printf(" x ") ;
                        printf("%I64d" , k) ;
                        d = d / k           ;
                        c ++                ;
                } else k ++                 ;
        }
        if(c) printf(" x ")                 ;
        printf("%I64d\n" , d)               ;
}
        编译、运行实况:
D:\[00.Exerciese.2022]\C>g++ -o x x.c

D:\[00.Exerciese.2022]\C>x
请输入一个正整数 : 600851475143
600851475143 = 71 x 839 x 1471 x 6857

D:\[00.Exerciese.2022]\C>
        结果表明,600851475143 一共有 4 个质数因子,其中,6857 最大,你自己完全可以通过计算器来进行验证。

        下面,再来看看所谓的答案 87625999
D:\[00.Exerciese.2022]\C>x
请输入一个正整数 : 87625999
87625999 = 71 x 839 x 1471

D:\[00.Exerciese.2022]\C>
        可见,876259993 个质数因子存在,可见,它的确不是一个质数!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-7 13:19:42 | 显示全部楼层
        答案是多少?
        6857 是正确答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-7 14:03:45 | 显示全部楼层
jackz007 发表于 2022-9-7 13:19
答案是多少?
        6857 是正确答案

//87625999  下面为小甲鱼代码
#include <stdio.h>
#include <math.h>

int main() {
        long long i, j, k, l, num = 600851475143;
        _Bool flag = 1;

        for (i = 2, j = num / i; flag != 0; i++, j = num / i, flag = 1) {
                if (i * j == num) {
                        k = sqrt((double)j);
                        for (l = 2; l <= k; l++) {
                                if (j % l == 0) {
                                        flag = 0;
                                        break;
                                }
                        }
                        if (flag) {
                                break;
                        }
                }
        }

        printf("%lld\n", i);

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-7 16:09:04 | 显示全部楼层
         这个代码的答案是 87625999,可是,87625999 = 1234169 x 71 ,所以,它并非一个素数!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-9-7 16:48:40 | 显示全部楼层
jackz007 发表于 2022-9-7 16:09
这个代码的答案是 87625999,可是,87625999 = 1234169 x 71 ,所以,它并非一个素数!

主要是自己写的,没有自信是对,只能保证程序运行是没问题的;至于结果不知道对不对;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-7 17:41:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-7 18:30 编辑
阿亮不减肥 发表于 2022-9-7 16:48
主要是自己写的,没有自信是对,只能保证程序运行是没问题的;至于结果不知道对不对;


        我们可以为 600851475143 分解质因数:
#include <stdio.h>

int main(void)
{
        int c                               ;
        long long d , k , n                 ;
        printf("请输入一个正整数 : ")       ;
        scanf("%I64d" , & n)                ;
        printf("%I64d = " , n)              ;
        for(c = 0 , d = n , k = 2 ; k * k < d + 1 ;) {
                if(! (d % k)) {
                        if(c) printf(" x ") ;
                        printf("%I64d" , k) ;
                        d = d / k           ;
                        c ++                ;
                } else k ++                 ;
        }
        if(c) printf(" x ")                 ;
        printf("%I64d\n" , d)               ;
}
        编译、运行实况:
D:\[00.Exerciese.2022]\C>g++ -o x x.c

D:\[00.Exerciese.2022]\C>x
请输入一个正整数 : 600851475143
600851475143 = 71 x 839 x 1471 x 6857

D:\[00.Exerciese.2022]\C>
        结果表明,600851475143 一共有 4 个质数因子,其中,6857 最大,你自己完全可以通过计算器来进行验证。

        下面,再来看看所谓的答案 87625999
D:\[00.Exerciese.2022]\C>x
请输入一个正整数 : 87625999
87625999 = 71 x 839 x 1471

D:\[00.Exerciese.2022]\C>
        可见,876259993 个质数因子存在,可见,它的确不是一个质数!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-10 13:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表