鱼C论坛

 找回密码
 立即注册
查看: 4419|回复: 15

c语言 函数调用 关于素数

[复制链接]
发表于 2013-5-6 19:49:26 | 显示全部楼层 |阅读模式

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

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

x
请各位大神帮忙。。。。



这是题目

题目

题目
题目大意:写一个程序,从键盘输入一个整数,当简素数乘积等于所输入的数是输出所有的素数。


小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-6 20:17:30 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-6 20:39:57 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-6 21:12:17 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-6 21:59:01 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-6 22:41:37 | 显示全部楼层
  1. #include<stdio.h>


  2. /*简素数*/
  3. void Prime(int x)
  4. {
  5.         if(x%2==0&&x!=2)
  6.         {
  7.                
  8.                 printf("%d ",2);
  9.                 Prime(x/2);
  10.         }else if(x%3==0&&x!=3)
  11.         {
  12.                 printf("%d ",3);
  13.                 Prime(x/3);
  14.         }else if(x%5==0&&x!=5)
  15.         {
  16.                
  17.                 printf("%d ",5);
  18.                 Prime(x/5);
  19.         }else
  20.         {
  21.                 printf("%d ",x);
  22.         }
  23.        
  24. }

  25. int main()
  26. {
  27.         int n;

  28.         printf("Input a intege:");
  29.         scanf("%d",&n);
  30.        
  31.         Prime(n);
  32.         printf("\n");
  33.         return 0;
  34. }
复制代码
希望能帮到你:lol
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-6 23:12:35 | 显示全部楼层
这个是不是还不太完整啊,你只考虑到了素数为2,3,5的情况,还有其他素数没有考虑,例如输入169,上述程序就不能输出正确答案
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-6 23:47:36 | 显示全部楼层
本帖最后由 vivi的哥 于 2013-5-6 23:48 编辑
  1. #include<iostream>
  2. /*简素数*/
  3. void Prime(int x)
  4. {
  5.     for(int i =2; i<=x;i++)
  6.     {
  7.         int t = x%i;
  8.         if(t == 0 )
  9.         {
  10.             std::cout<<i<<' ';
  11.             Prime(x/i);
  12.         //    i++;
  13.             break;
  14.         }
  15.     }
  16. }

  17. int main()
  18. {
  19.         int n;

  20.         std::cout<<"Input a intege:\n";
  21.         std::cin>>n;

  22.         Prime(n);
  23.         std::cout<<'\n';
  24.         return 0;
  25. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-7 13:24:22 | 显示全部楼层

奥,看来还是没考虑周全
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-7 16:44:49 | 显示全部楼层

谢谢共享,,但是我现在还在学C语言,, std::cout<<i<<' ';这些都看不懂
也不知道怎么改成printf的格式,求详解感恩无私的分享与奉献 :)
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-7 16:54:54 | 显示全部楼层

std::cout<<i<<' ';  这个我已经会改了
但是我不知道void Prime(int x)
{
    for(int i =2; i<=x;i++)
    {
        int t = x%i;
        if(t == 0 )
        {
            std::cout<<i<<' ';
            Prime(x/i);
        //    i++;
            break;
        }
    }
}
的意思,,能解释一下吗?
先谢谢咯感恩无私的分享与奉献 :)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-8 11:55:10 | 显示全部楼层
如果素数i是所给数的一个乘积因子,则输出该素数,并且对所给数除以乘积因子的值在进行求素数运算,同时循环不再继续
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-8 12:36:51 | 显示全部楼层
zoe琦 发表于 2013-5-7 16:44
谢谢共享,,但是我现在还在学C语言,, std::cout

这个倒无所谓,C和C++的不同输出方法而已
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-14 21:33:54 | 显示全部楼层
vivi的哥 发表于 2013-5-8 11:55
如果素数i是所给数的一个乘积因子,则输出该素数,并且对所给数除以乘积因子的值在进行求素数运算,同时循环 ...

在请教一下吧
如果我输入44的话第一次先打印出2,第二次再打印出2,最后一次打印出11,1打印完后不是应该还有prime(x/i)吗?此时x/i等于1,不是不满足for语句里的i<=x吗?这样break就没有用到了。
但是我把break去掉又不可以。
能帮我解释一下吗?
感恩无私的分享与奉献 :)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-15 10:09:10 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-17 20:39:02 | 显示全部楼层
不认识英文好苦比。。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-29 03:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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