#include <stdio.h>

#include <string.h>

#define LEN_SHANG sizeof(struct node_shang)

#define LEN_YUSHU sizeof(struct node_yushu)

struct node_shang {/*商结点*/

char data;

struct node_shang *next;

} *shang_head=0, *shang_tail=0;

struct node_yushu {/*余数结点*/

long data;

struct node_yushu *next;

} *yushu_head=0, *yushu_tail=0;

int shang_empty(void) {/*判断商串是否空*/

return shang_head==0;

}

int yushu_empty(void) {/*判断余数串是否空*/

return yushu_head==0;

}

struct node_shang *new_shang_node(char ch) {/*新建商的结点*/

struct node_shang *ptr= (struct node_shang *) malloc(LEN_SHANG);

ptr->data=ch;

ptr->next=0;

return ptr;

}

struct node_yushu *new_yushu_node(long a) {/*新建余数结点*/

struct node_yushu *ptr= (struct node_yushu *) malloc(LEN_YUSHU);

ptr->data= a;

ptr->next=0;

return ptr;

}

void insert_shang(char ch) {/*插入商字符串的结点*/

struct node_shang *newptr= new_shang_node(ch);

if(shang_empty())

shang_head=shang_tail=newptr;

else {

shang_tail->next= newptr;

shang_tail= newptr;

}

}

void insert_yushu(long a) {/*插入余数结点*/

struct node_yushu *newptr= new_yushu_node(a);

if(yushu_empty())

yushu_head=yushu_tail=newptr;

else {

yushu_tail->next= newptr;

yushu_tail= newptr;

}

}

char *longinttostr(long a, char *str) {/*将长整型转化为字符串*/

char temp;

int i, j;

i=0;

if(a==0) {/*a=0时特别处理*/

str[0]='0';

i++;

} else {

while(a!=0) {

str[i]=(a%10)+'0';

a=a/10;

i++;

}

}

str[i]='\0';

for(j=0; j<=(i-1)/2; j++) {/*倒置*/

temp= str[j];

str[j]= str[i-1-j];

str[i-1-j]= temp;

}

return str;/*返回长度*/

}

long found_xunhuan(void) {/*通过余数是否相等判断是否出现循环节,若出现返回出现位置的指针ind(相对小数点的偏移量),若无反回-1*/

struct node_yushu *i;

long ind;

for(i=yushu_head, ind=0; i->next!=0; i=i->next, ind++)

if(yushu_tail->data==i->data)

return ind;

if(i->next==0)

return -1;

}

void div(long d, long n) {/*d是被除数,n是除数*/

long yushu, shang_zhenshu, temp, i, len_temp;

char str[7];

struct node_shang *j, *new_node;

/*计算整数部分*/

shang_zhenshu= d/n;

d=d%n;

insert_yushu(d);/*余数保存到余数链表*/

longinttostr(shang_zhenshu, str);

i=0;

while(str[i]!='\0') {/*商保存到商链表*/

insert_shang(str[i]);

i++;

}

insert_shang('.');

if(d==0) {/*恰好整除的情况*/

insert_shang('0');

return;

}

while((d!=0)&&((temp=found_xunhuan())==-1)) {/*当除尽或发现循环节时停止*/

d=d*10;/*进位*/

insert_shang((d/n)+'0');

insert_yushu(d%n);

d=d%n;

}

/*除法已完成*/

if(temp!=-1) {/*发现循环节*/

j=shang_head;

while(j->data!='.')/*找到小数点的位置*/

j=j->next;

for(i=0;i<temp; i++)

j=j->next;/*找到循环节开始的前一位*/

new_node= new_shang_node('(');

new_node->next=j->next;

j->next= new_node;

new_node= new_shang_node(')');

shang_tail->next= new_node;

shang_tail= new_node;

}

}

void output(void) {

struct node_shang *i;

long temp;

i=shang_head;

temp=0;

while(i->next!=0) {

putchar(i->data);

i=i->next;

temp++;

if((temp%76)==0)/*每行输出76个字符*/

putchar('\n');

}

putchar(shang_tail->data);

putchar('\n');

}

int main(void) {

long d, n;

scanf("%ld %ld", &d, &n);

while((d<1)||(d>100000)||(n<1)||(n>100000)) {

printf("Input is wrong! Please inpute again!(1<=d, n<=100000)\n");

scanf("%ld %ld", &d, &n);

}

div(d, n);

output();

return 0;

}

求大于3的素数c语言,c语言判断一个大于3的数是否是素数相关推荐

  1. C语言学习之输入一个大于三的值判断是否为素数

    C语言学习之输入一个大于三的值判断是否为素数 方法一 #include <stdio.h> int main(){int number,x; //定义变量printf("请输入一 ...

  2. c语言给定整数求紧随素数,C语言:找出一个大于给定整数m且紧随m的素数,-求出能整除x且不是偶数的数的个数,...

    //函数fun功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回. #include #include #include int fun( int m) { int i,k; for (i= ...

  3. 编写一个函数判断一个整数是不是素数c语言,编写函数判断一个整数是否为素数....

    #include <stdio.h> #include <math.h> /* 7-5 判断一个整数是否为素数 (15 分) 本题要求编写程序,判断一个给定的整数是否为素数.素 ...

  4. 判断一个数是否为素数的两种方法:质数又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因。最小的质数是2。

    一,由键盘输入一个数判断是否为素数(设一个数存放变量,将为0的代表非素数,为1的代表为素数) #include <stdio.h> int main() { int i,flag,numb ...

  5. C++判断一个大于2的整数是否是素数

    最近在学习乔林老师的C++教学视频.在算法一节有关于判断素数的内容,感觉挺有收获的,就想着跟大家分享一下.现在,让我们一起来学习吧. 1.面对素数合数检验,我们很容易就联想到暴力穷举的算法. 例如以下 ...

  6. 编写一个函数判断一个整数是不是素数c语言,编写函数判断一个整数是否为素数...

    题目内容: 编写函数int isprime(int a);用来判断整数a是否为素数,若是素数,函数返回1,否则返回0.调用该函数找出任意给定的n个整数中的素数. 注意,1不是素数. 输入格式: 一系列 ...

  7. 给一个数,判断它是否是素数(质数) 质数:一个大于1的自然数只能被1和它本身整除...

    1 方法一: 2 3 x = int(input('--')) 4 flag = False # 假设不是素数or质数,做一个标志位 5 for i in range(2, x): 6 if x % ...

  8. 用C语言编写:判断一个≥2的整型数是否存在于斐波那契数列中?

    自己写的,感觉挺有成就感的,就展示出来吧! 判断一个≥2的整型数是否存在于斐波那契数列中? 若存在,则返回第几项:若不在,则返回-1 #include <stdio.h> long gen ...

  9. C语言程序设计之判断是否是回文数

    给出一个相对可靠的定义: 设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数. 例如,若n=1234321,则称n为一回文数:但若n=1234567,则n不是回文数. ...

  10. c语言如何判断字符不是空格,C语言中如何判断一个字符是空格,下一个字符不是空格...

    满意答案 NICaben 2018.11.04 采纳率:53%    等级:12 已帮助:6601人 #include #include int get_word_nums(const char *s ...

最新文章

  1. 换了路由器电脑都连不上网了_技术丨电脑连不上网,我要如何冲浪?
  2. error: Microsoft Visual C++ 14.0 is required.(安装scrapy)
  3. python画画-用python实现你的绘画梦想
  4. vue前端 html,Vue.js v-html
  5. NumPy学习笔记(一)
  6. Java实现单链表的反转
  7. html中radio,checkbox值的获取、赋值、注册事件
  8. Python调用微博API获取微博内容
  9. ActiveMQ常见配置
  10. Error: Could not link: /usr/local/share/doc/homebrew
  11. js复杂对象和简单对象的简单转化
  12. Calendar(显示日期)
  13. 长文预警-超详细的熊猫烧香病毒分析_00
  14. winXP系统如何打开剪贴板查看器
  15. ACM1008玛雅日历
  16. Pygame库200行代码实现简易飞机大战的小游戏
  17. 成年人社交中的10个潜规则
  18. 2021 年最值得推荐的 5 门人工智能编程语言
  19. Buffon投针实验 · 数学的直观理解 · 基础知识很重要
  20. 报错:The path is not a valid path to the xxx kernel headers.

热门文章

  1. Maven常用命令 - 构建反应堆中指定模块
  2. Spring Boot DATA JPA抓取SQL运行时的传递进去的参数信息
  3. 限流的简单使用及学习
  4. Ubuntu Apache 不同端口监听不同站点
  5. [20170203]克隆schema.txt
  6. javascript的模块开发方法;
  7. RedHat Linux 5企业版安装telnet
  8. scvmm管理hyper-v克隆主机(二)
  9. mysql:Error while performing database loggin with the mysql driver
  10. iOS获取当前app的名称和版本号