题目:判断一个素数能被几个9整除
程序分析:
1.第一种理解(官方的)
判断一个素数能整除几个9组成的数,比如13可以被6个9组成的数整除,即13可以被999999整除。
程序源代码(正确的):
#include<stdio.h>
void main()
{
long int m9=9,sum=9;
int zi,n1=1,c9=1;
printf("please input a sushu:\n");
scanf("%d",&zi);
while(n1!=0)
{
if(!(sum%zi))
n1=0;
else
{
m9=m9*10;
sum=sum+m9;
c9++;
}
}
printf("%ld,can be divided by %d \"9\"",sum,c9);
}
但是他这里好像忽略了质数为2的情况,应该在单独加一条判断语句
#include<stdio.h>
int main()
{
long int m9=9,sum=9;
int zi,n1=1,c9=1;
printf("please input a sushu:\n");
scanf("%d",&zi);
if(zi==2){
printf("%d can't be divided by \"9\"",zi);
return 0;
}
while(n1!=0)
{
if(!(sum%zi))
n1=0;
else
{
m9=m9*10;
sum=sum+m9;
c9++;
}
}
printf("%ld,can be divided by %d \"9\"",sum,c9);
return 0;
}
2.第二种理解(我自己的理解,也是错误的理解)
判断一个素数能被几个9整除,比如17可以整除0个9。
既然是素数了,自然除了1和这个数本身不能再被任何数整除,刚刚反应过来。。。
我的程序源码(错误的):
#include <stdio.h>
#include <math.h>
int isss(int num);
void main(){
int num,x,count=0;
printf("请输入你要查询的素数:");
scanf("%d",&num);
x = num;
if(isss(x)){
if(x<9){
printf("%d能被0个9整除\n",num);
}
else{
while(x!=1){
if(x%9==0){
x /= 9;
count++;
}
else{
break;
}
}
printf("%d能被%d个9整除\n",num,count);
}
}
else{
printf("该数不是素数!\n");
}
}
int isss(int num){ //用于判断是否为素数
int i,flag = 1;
for(i=2;i<sqrt(num);i++){
if(num%i==0){
flag = 0;
}
}
if(flag == 0){
return 0;
}
else{
return 1;
}
}