啊哈C——学习5.3、5.4判断一个正整数是否为质数

2015年2月3日22:22:02

1.如何判断一个正整数是否为质数?

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int iNum,index;
    
    printf("这是一个判断输入的正整数是否为质数的小程序!\r\n");
    
    while(1)
    {
		printf("请输入一个正整数:\r\n");
		
		scanf("%d",&iNum);
		
        if(iNum < 0)
        {
			printf("你输入的数%d不是正整数,请重新输入!\r\n",iNum);
			continue;
        }
        if(1 == iNum)
        {
			printf("你输入的正整数%d既不是质数也不是合数!\r\n",iNum);
        }
        else
        {
			for(index = 2;index < iNum;index ++)
			{
				if(0 == iNum%index)
				{
					break;
				}
			}
			
			if(index >= iNum)
			{
				printf("你输入的正整数%d是质数\r\n",iNum);
			}
			else
			{
				printf("你输入的正整数%d是合数\r\n",iNum);
			}
        }
    }
	system("pause");
	return 0;
}


以下是一个用C语言在CCS5.3环境下实现STM320C6678的FFT代码的示例: ``` #include <stdio.h> #include <stdlib.h> #include <math.h> #include <c6x.h> #include "c66xmath.h" #include "fft.h" #define N 1024 //FFT点数 #define M 10 //M=log2(N) complex_t x[N], y[N]; //输入和输出序列 int main(void) { int i; printf("Start FFT...\n"); //初始化输入序列 for (i = 0; i < N; i++) { x[i].real = cos(2 * PI * i / N); x[i].imag = sin(2 * PI * i / N); } //执行FFT fft(x, y, M); //输出结果 for (i = 0; i < N; i++) { printf("y[%d] = %f + %fi\n", i, y[i].real, y[i].imag); } printf("FFT Done!\n"); return 0; } void fft(complex_t *x, complex_t *y, int m) { int i, j, k, n1, n2; complex_t t, u; //位反转置换 bit_reverse(x, m); //蝴蝶运算 for (i = 0; i < m; i++) { n1 = 1 << i; n2 = n1 << 1; for (j = 0; j < n1; j++) { for (k = j; k < N; k += n2) { t = cplx_mul(x[k + n1], Wn(j, n1)); u = x[k]; x[k] = cplx_add(u, t); x[k + n1] = cplx_sub(u, t); } } } //输出结果 for (i = 0; i < N; i++) { y[i] = x[i]; } } void bit_reverse(complex_t *x, int m) { int i, j, k; complex_t temp; for (i = 0; i < N; i++) { j = 0; for (k = 0; k < m; k++) { j |= ((i >> k) & 1) << (m - 1 - k); } if (j > i) { temp = x[i]; x[i] = x[j]; x[j] = temp; } } } complex_t Wn(int k, int N) { complex_t w; w.real = cos(2 * PI * k / N); w.imag = -sin(2 * PI * k / N); return w; } complex_t cplx_add(complex_t a, complex_t b) { complex_t c; c.real = a.real + b.real; c.imag = a.imag + b.imag; return c; } complex_t cplx_sub(complex_t a, complex_t b) { complex_t c; c.real = a.real - b.real; c.imag = a.imag - b.imag; return c; } complex_t cplx_mul(complex_t a, complex_t b) { complex_t c; c.real = a.real * b.real - a.imag * b.imag; c.imag = a.real * b.imag + a.imag * b.real; return c; } ``` 该代码通过调用FFT函数实现了对输入序列的FFT,并将输出结果存储在y数组中。其中,bit_reverse函数实现了位反转置换,cplx_add、cplx_sub和cplx_mul函数分别实现了复数的加、减和乘运算。Wn函数返回了旋转因子。 需要注意的是,在CCS5.3环境下,需要包含c6x.h和c66xmath.h头文件,以便使用C66x DSP相关的指令和函数。同时,需要在工程属性中配置正确的链接脚本和编译选项,以便生成正确的可执行文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值