判断一个素数能被几个9整除

mingzhentanni 2011-05-08 12:18:56
//判断一个素数能被几个9整除
#include "stdio.h"
#include"math.h"
isPrime(int n)
{ int k,i,flag;
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)
{ flag=0; break;}
if(i>k)
flag=1;
return flag;
}
void main()
{
int n,i,count=0;
while(1)
{ scanf("%d",&n);
if(isPrime(n)) break;
}
for(i=10;;i*=10)
{ if((i-1)%n)
count++;
else if((i-1)%n==0)
{count++;
printf("count=%d",count);
break;
}

}
}
我是新手,请高人详细说明我程序出错在哪里,以及如何改进,小生不胜感激啊!
...全文
1177 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mingzhentanni 的回复:]

引用 15 楼 pathuang68 的回复:
什么叫素数(Prime Number)?素数只能被1和它自己整除。所以你的问题“判断一个素数能被几个9整除”是没有意义的。如果非得要有答案,那么答案就是:一个素数不能被整除,其中n是自然数。

这里素数是当做除数而不是被除数,即判断(n个9组成的数)/素数==0
[/Quote]
3是素数 那可以整除无数个9组成的数,这n用得着算么?
mingzhentanni 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 pathuang68 的回复:]
什么叫素数(Prime Number)?素数只能被1和它自己整除。所以你的问题“判断一个素数能被几个9整除”是没有意义的。如果非得要有答案,那么答案就是:一个素数不能被整除,其中n是自然数。
[/Quote]
这里素数是当做除数而不是被除数,即判断(n个9组成的数)/素数==0
ysm_real 2011-05-08
  • 打赏
  • 举报
回复
LL的思路和主要程序是正确的。
错误:isPrime(int n)应改为int isPrime(int n),因为该函数的返回值为整型;
需要改进的:如果输入的素数<65535,即int的范围可以正确表达;但如果输入的素数很大的话,用int就表示
不出来的。

W170532934 2011-05-08
  • 打赏
  • 举报
回复
题目到底是个什么意思呢?没有理解。比如素数是13,你想问到底有几个9可以除尽吗?按照你的程序是6,
jialejiahi 2011-05-08
  • 打赏
  • 举报
回复
刚才看了一下楼主的程序,俺来说一下楼主的意思吧。
楼主程序的目的是:
输入一个素数,判断有多少个仅由9组成的数(比如9, 99, 999, 9999...)能被这个素数整除。
Lactoferrin 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pink9527 的回复:]

判断一个素数能被几个9整除并且根据一个素数只能被1和自身整除,那么只有一种可能,这个素数是9并且只能被1个9整除

最后想说找几本C语言常见问题解答上的问题发出来也比这个更有用吧
[/Quote]
素数是9.........
無_1024 2011-05-08
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <math.h>
bool isPrime(int n)
{
int k,i;
bool flag;
k = sqrt(n);
for(i=2;i<=k;i++)
{
if(n % i==0)
{
flag=false;
break;
}
}
if(i > k)
flag = true;
return flag;
}
void main()
{
int n,i,count=0;
while(1)
{
scanf("%d",&n);
if( isPrime(n) )
break;
}
for(i=10;;i*=10)
{
if( (i-1) % n == 1 )
count++;
else if( (i-1) % n == 0 )
{
count++;
printf("count=%d",count);
break;
}
}
}
//真不知道干啥啊
無_1024 2011-05-08
  • 打赏
  • 举报
回复
题目什么意思啊 看不懂
xspace_time 2011-05-08
  • 打赏
  • 举报
回复
判断一个素数能被几个9整除并且根据一个素数只能被1和自身整除,那么只有一种可能,这个素数是9并且只能被1个9整除

最后想说找几本C语言常见问题解答上的问题发出来也比这个更有用吧
Lactoferrin 2011-05-08
  • 打赏
  • 举报
回复
按照你的要求应该直接返回0
AnYidan 2011-05-08
  • 打赏
  • 举报
回复
LZ 应该看看素数的定义 -- 只能被1 和自身整除的整数,
  • 打赏
  • 举报
回复
不明白楼主啥意思,如果能被9整除,那就不是素数了。没有一个素数是能被9整除的(例如:5/9余5,13/9余4)
pathuang68 2011-05-08
  • 打赏
  • 举报
回复
什么叫素数(Prime Number)?素数只能被1和它自己整除。所以你的问题“判断一个素数能被几个9整除”是没有意义的。如果非得要有答案,那么答案就是:一个素数不能被n个9整除,其中n是自然数。
狮子和猿 2011-05-08
  • 打赏
  • 举报
回复
在此判断素数的程序就不写了,求能被几个9整除,模拟手算除法;
int num_nine(int su)
{
int k=9;
int count=1;
while(k%su)
{
++count;
k=10*k+9;
}
return count;
}
xspace_time 2011-05-08
  • 打赏
  • 举报
回复
9 99 999 9999可以分解成3*3*1 3*3*11 3*3*111 3*3*1111 显然这个素数只可能是1 3 11 111 1111
11111 111111等等,尽管还不能判断1111111111是否是素数,但是已知输入的必然是素数,如果输入的数是3,那么可以有无数个有9组成的数能被3整除,如果不是3,那么必然是全部由1组成的数,比如11,可以被位数为偶数的整除,那么也是无数个,在全为1的素数的基础上乘以整数倍,所以任何一个都是无数个,如果不是这些,那么比如111=3*37,而输入37,那么可以在999的基础上扩展为999999 9999999等,因此还是无数个

其实我认为应该判断能被由9组成的数整除的数是否为素数才对
flysnowhite 2011-05-08
  • 打赏
  • 举报
回复
程序基本是正确的,就是main函数看着别扭。
还有就是程序可以优化。
flysnowhite 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ysm_real 的回复:]
LL的思路和主要程序是正确的。
错误:isPrime(int n)应改为int isPrime(int n),因为该函数的返回值为整型;
需要改进的:如果输入的素数<65535,即int的范围可以正确表达;但如果输入的素数很大的话,用int就表示
不出来的。
[/Quote]
函数的返回值默认为整型。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧