我是靠谱客的博主 重要鸭子,最近开发中收集的这篇文章主要介绍【C语言经典100题】(1月11日-day29),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

cr:经典

题目29

判断一个数字是否为质数。

思路:

输入数字后,for循环从i=2开始取余,直到小于这个数字本身。若是 i 小于这个数字,则不是素数;否则是素数。

代码:

#include<stdio.h>
f(int x);

main()
{
	int x;
	printf("输入数字:");
	scanf("%d", &x);
	f(x);
}

f(int x)
{
	int i;
	for (i = 2; i < x; i++) {
		if (x % i == 0) {
			printf("不是素数。n");
			break;
		}
	}
	if (x == i) {
		printf("是素数。n");
	}
}

对方:

//  Created by www.runoob.com on 15/11/9.
//  Copyright © 2015年 菜鸟教程. All rights reserved.
//
 
#include<stdio.h>
#include<math.h>
#define MAX 1000
 
 
int prime[MAX];
 
int isPrimeNaive(int n)
{
    if(n <= 1)
        return 0;
    for(int i = 2; i < n; i++)
        if(n % i == 0)
            return 0;
    return 1;
}
 
int isPrime(int n)
{
    if(n<= 1)
        return 0;
    if(n == 2)
        return 1;
    if(n%2 == 0)
        return 0;
    int limit = (int)sqrt((double)n);
    for(int i = 3; i <= limit; i=i+2)
    {
        if(n % i == 0)
            return 0;
    }
    return 1;
}
 
void sieve()
{
    prime[0] = 0;
    prime[1] = 0;
    for(int i = 2; i < MAX; i++)
        prime[i] = 1;
    int limit = (int)sqrt((double)MAX);
    for(int i = 2; i <= limit; i++)
    {
        if(prime[i])
            for(int j = i*i; j <= MAX; j+=i)
                prime[j] = 0;
    }
}
 
int isPrimeSieve(int n)
{
    if(prime[n])
        return 1;
    else
        return 0;
}
 
int main()
{
    sieve();
    printf("N=%d %dn", 1, isPrime(1));
    printf("N=%d %dn", 2, isPrime(2));
    printf("N=%d %dn", 3, isPrime(3));
    printf("N=%d %dn", 4, isPrime(4));
    printf("N=%d %dn", 7, isPrime(7));
    printf("N=%d %dn", 9, isPrime(9));
    printf("N=%d %dn", 13, isPrime(13));
    printf("N=%d %dn", 17, isPrime(17));
    printf("N=%d %dn", 100, isPrime(100));
    printf("N=%d %dn", 23, isPrime(23));
    printf("N=%d %dn", 1, isPrime(1));
    return 0;
}

反思&收获:

不知道为什么对方用了那么一大串。


cr:小林

例29

有5个美女坐在一起,问第5个美女多少岁,她说比第4个美女大2岁,问第4个美女多少岁她说比第3个美女大2岁;问第3个美女多少岁,她说比第2个美女大2岁;问第2个美女多少岁,她说比第一个大2岁。最后问第1个美女,她说10岁。请问第2、3、4、5个美女多少岁? 要求用C语言编程实现。

思路:

要求出后四个美女的年龄,又用到递归,需要从后往前计算才能用到递归。每次计算的时候 f(n-1)就可以往前计算,直到n=1的时候有结果可以直接使用。

代码:

#include<stdio.h>
int f(int n);

main()
{
	int n;
	printf("第2、3、4、5位美女的年龄分别是:");
	f(5);
	printf("n");
}

int f(int n)
{
	int i = 1;
	if (n != 1) {
		n = f(n - 1) + 2;
		printf("%-3d", n);
	}
	else {
		n = 10;
	}
	return n;
}

对方:

反思&收获:

之前做过的一道题。

最后

以上就是重要鸭子为你收集整理的【C语言经典100题】(1月11日-day29)的全部内容,希望文章能够帮你解决【C语言经典100题】(1月11日-day29)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部