经典C程序100例85:判断一个素数能被几个9整除

题目:判断一个素数能被几个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;
	}
	
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值